mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-17 04:41:36 +08:00
Merge pull request #238 from NativeScript/feature/menu-items-binding
MenuItems should inherit binding context when defined form XML
This commit is contained in:
@ -27,6 +27,7 @@ import LabelModule = require("ui/label");
|
|||||||
import stackLayoutModule = require("ui/layouts/stack-layout");
|
import stackLayoutModule = require("ui/layouts/stack-layout");
|
||||||
import helper = require("../helper");
|
import helper = require("../helper");
|
||||||
import view = require("ui/core/view");
|
import view = require("ui/core/view");
|
||||||
|
import builder = require("ui/builder");
|
||||||
|
|
||||||
export function addLabelToPage(page: PageModule.Page, text?: string) {
|
export function addLabelToPage(page: PageModule.Page, text?: string) {
|
||||||
var label = new LabelModule.Label();
|
var label = new LabelModule.Label();
|
||||||
@ -68,6 +69,15 @@ export function test_menuItem_inherit_bindingContext() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function test_menuItem_inherit_bindingContext_inXML() {
|
||||||
|
var p = <PageModule.Page>builder.parse("<Page><Page.optionsMenu><MenuItem text=\"{{ myProp }} \" /></Page.optionsMenu></Page>");
|
||||||
|
p.bindingContext = { myProp: "success" };
|
||||||
|
|
||||||
|
var menuItem = p.optionsMenu.getItemAt(0);
|
||||||
|
|
||||||
|
TKUnit.assertEqual(menuItem.text, "success", "menuItem.text");
|
||||||
|
};
|
||||||
|
|
||||||
export function test_Setting_OptionsMenu_doesnt_thrown() {
|
export function test_Setting_OptionsMenu_doesnt_thrown() {
|
||||||
|
|
||||||
var page: PageModule.Page;
|
var page: PageModule.Page;
|
||||||
@ -392,4 +402,4 @@ export var test_cssShouldBeAppliedAfterChangeToAllNestedElements = function () {
|
|||||||
finally {
|
finally {
|
||||||
helper.goBack();
|
helper.goBack();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,7 +6,6 @@ import observable = require("data/observable");
|
|||||||
import utils = require("utils/utils");
|
import utils = require("utils/utils");
|
||||||
import view = require("ui/core/view");
|
import view = require("ui/core/view");
|
||||||
import application = require("application");
|
import application = require("application");
|
||||||
import imageSource = require("image-source");
|
|
||||||
import enums = require("ui/enums");
|
import enums = require("ui/enums");
|
||||||
|
|
||||||
declare var exports;
|
declare var exports;
|
||||||
@ -146,9 +145,12 @@ class PageFragmentBody extends android.app.Fragment {
|
|||||||
var item = items[i];
|
var item = items[i];
|
||||||
var menuItem = menu.add(android.view.Menu.NONE, i, android.view.Menu.NONE, item.text);
|
var menuItem = menu.add(android.view.Menu.NONE, i, android.view.Menu.NONE, item.text);
|
||||||
if (item.icon) {
|
if (item.icon) {
|
||||||
var img = imageSource.fromResource(item.icon);
|
var androidApp = application.android;
|
||||||
var drawable = new android.graphics.drawable.BitmapDrawable(img.android);
|
var res = androidApp.context.getResources();
|
||||||
menuItem.setIcon(drawable);
|
var id = res.getIdentifier(item.icon, 'drawable', androidApp.packageName);
|
||||||
|
if (id) {
|
||||||
|
menuItem.setIcon(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var showAsAction = PageFragmentBody.getShowAsAction(item);
|
var showAsAction = PageFragmentBody.getShowAsAction(item);
|
||||||
@ -179,7 +181,7 @@ class PageFragmentBody extends android.app.Fragment {
|
|||||||
menuItem._raiseTap();
|
menuItem._raiseTap();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
super.onOptionsItemSelected(item);
|
super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -206,7 +206,16 @@ export class OptionsMenu implements dts.OptionsMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public setItems(items: Array<MenuItem>) {
|
public setItems(items: Array<MenuItem>) {
|
||||||
this._items = items;
|
// Remove all existing items
|
||||||
|
while (this._items.length > 0) {
|
||||||
|
this.removeItem(this._items[this._items.length - 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new items
|
||||||
|
for (var i = 0; i < items.length; i++) {
|
||||||
|
this.addItem(items[i]);
|
||||||
|
}
|
||||||
|
|
||||||
this.invalidate();
|
this.invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user