Javascript events SproutCore在MenuPane中以编程方式启动项目选择
我们正在使用SproutCore v1.6,并试图通过编程方式设置所选菜单项。MenuPane如下所示Javascript events SproutCore在MenuPane中以编程方式启动项目选择,javascript-events,views,sproutcore,Javascript Events,Views,Sproutcore,我们正在使用SproutCore v1.6,并试图通过编程方式设置所选菜单项。MenuPane如下所示 OurPage = SC.Page.design({ myAccountMenu: SC.MenuPane.create({ layout: { width: 200 }, items: [ { title: 'Sign Out', action: 'signOut' } ], itemAction
OurPage = SC.Page.design({
myAccountMenu: SC.MenuPane.create({
layout: { width: 200 },
items: [
{ title: 'Sign Out', action: 'signOut' }
],
itemActionKey: 'action',
itemTitleKey: 'title'
})
});
然后,我们尝试如下设置“selectedItem”
OurPage.getPath('myAccountMenu').set('selectedItem', OurPage.getPath('myAccountMenu').items[0])
这将正确设置所选项目,我们可以查询以下内容以获取该项目:
OurPage.getPath('myAccountMenu').get('selectedItem')
但是,它实际上从未触发菜单上的操作。e、 g.它实际上并没有注销用户。但是,当您手动单击菜单项时,它工作正常。有几件事
1) 使用页面上的插座获取accountMenu
OurPage = SC.Page.design({
menu: SC.outlet('myAccountMenu'),
myAccountMenu: SC.MenuPane.create({...})
});
这样,如果myAccountMenu
的路径更改,您只需更改您的插座即可
2) 要设置项目,只需执行以下操作
var toSelect = OurPage.getPath('menu').items[0];
OurPage.setPath('menu.selectedItem', toSelect);
3) 查看代码,当以编程方式设置选择时,没有简单的方法来调用操作。这是因为您传入的项会变成MenuItemView
实例,而这些实例会在mouseUp
上启动操作
但是,如果您使用的是状态图(即使不是),您也可以从项中获取操作并调用它
App.statechart.sendEvent(toSelect.action)代码>