SproutCore以编程方式在菜单栏中启动项目选择
SproutCore Programmatically fire item selection in MenuPane
我们正在使用SproutCore v1.6,并试图以编程方式设置所选菜单项。MenuPane
如下图所示。
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')
然而,它从来没有真正触发菜单上的操作。它实际上并没有让用户退出。但是,当您手动单击菜单项时,它可以正常工作。
一些事情
1)在页面上使用outlet来获取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
上启动它们的行动。
然而,如果您正在使用statecharts(或者即使没有),您可以直接从项目中抓取操作并调用它
App.statechart.sendEvent(toSelect.action);
相关文章:
- 正在将数据主题添加到所有项目
- 我的jQuery插件参数没有正确启动,遇到了问题
- 取消选择滚动启动时的所有列表视图项目
- 为什么可以't我在html上启动了我的LibGDX项目
- 画布项目未启动(或可单击)
- 在项目启动时从$http设置Angularjs常量.获取
- 离子启动画面不会在全新项目的安卓中显示
- 为什么Visual Studio Node.js项目使用shebang/bash脚本来启动服务器
- 尝试使用Selenium运行测试时出现此错误:启动配置AWTConsole引用不存在的项目测试项目
- 我的启动项目中的JS文件的另一个“断点当前不会被命中”错误
- 如何在Phonegap项目中添加图标和启动画面
- AngularJS angular种子启动程序项目添加指令
- I'I’我正在考虑启动一个Angular项目.我应该等待版本2吗
- JQuery无法启动我的Rails 3.2项目
- SproutCore以编程方式在菜单栏中启动项目选择
- 启动Ember.js项目
- 如何使用WebStorm启动JavaScript项目
- 启动带弹出窗口的网格项目,点击后会发生变化
- 安装时使用grunt启动项目时出错
- 在Cloud9上启动一个简单的DerbyJS项目