Skip to content

Commit 70aa10d

Browse files
author
vakrilov
committed
MenuItems should inherit binding context when defined form XML
1 parent de8cc0d commit 70aa10d

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

apps/tests/ui/page/page-tests-common.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import LabelModule = require("ui/label");
2727
import stackLayoutModule = require("ui/layouts/stack-layout");
2828
import helper = require("../helper");
2929
import view = require("ui/core/view");
30+
import builder = require("ui/builder");
3031

3132
export function addLabelToPage(page: PageModule.Page, text?: string) {
3233
var label = new LabelModule.Label();
@@ -68,6 +69,15 @@ export function test_menuItem_inherit_bindingContext() {
6869
}
6970
}
7071

72+
export function test_menuItem_inherit_bindingContext_inXML() {
73+
var p = <PageModule.Page>builder.parse("<Page><Page.optionsMenu><MenuItem text=\"{{ myProp }} \" /></Page.optionsMenu></Page>");
74+
p.bindingContext = { myProp: "success" };
75+
76+
var menuItem = p.optionsMenu.getItemAt(0);
77+
78+
TKUnit.assertEqual(menuItem.text, "success", "menuItem.text");
79+
};
80+
7181
export function test_Setting_OptionsMenu_doesnt_thrown() {
7282

7383
var page: PageModule.Page;
@@ -392,4 +402,4 @@ export var test_cssShouldBeAppliedAfterChangeToAllNestedElements = function () {
392402
finally {
393403
helper.goBack();
394404
}
395-
}
405+
}

ui/page/page-common.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,20 @@ export class OptionsMenu implements dts.OptionsMenu {
206206
}
207207

208208
public setItems(items: Array<MenuItem>) {
209-
this._items = items;
209+
if (this._items === items) {
210+
return;
211+
}
212+
213+
// Remove all existing items
214+
while (this._items.length > 0) {
215+
this.removeItem(this._items[this._items.length - 1]);
216+
}
217+
218+
// Add new items
219+
for (var i = 0; i < items.length; i++) {
220+
this.addItem(items[i]);
221+
}
222+
210223
this.invalidate();
211224
}
212225

0 commit comments

Comments
 (0)