gpt4 book ai didi

javascript-events - SproutCore以编程方式触发MenuPane中的项目选择

转载 作者:行者123 更新时间:2023-12-03 13:38:45 25 4
gpt4 key购买 nike

我们正在使用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)使用页面上的 socket 获取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)看代码,以编程方式设置选择时,没有简单的方法来调用 Action 。那是因为您传递的项目变成了 MenuItemView实例,并且这些实例在 mouseUp上触发了它们的 Action 。

但是,如果您正在使用状态图(或什至没有使用状态图),则只需从项目中抓取 Action 并调用它
App.statechart.sendEvent(toSelect.action);

关于javascript-events - SproutCore以编程方式触发MenuPane中的项目选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8329237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com