【发布时间】:2015-04-02 16:04:06
【问题描述】:
我在我的项目中使用了 knockoutjs。我有一个场景,我必须在我的视图模型中创建一个嵌套菜单,我这样做是这样的:
self.menu = [
{
name: 'Services',
sub: [{ name: 'Service-A' }, { name: 'Service-B' }]
},
// etc
];
self.chosenMenu = ko.observable();
self.goToMenu = function (main, sub) {
var selectedMenu = {
main: main,
sub: sub
};
self.chosenMenu(selectedMenu);
};
我的观点:
<ul class="nav navbar-nav menuitems col-md-8" data-bind="foreach: menu">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span data-bind="text: name"></span></a>
<ul class="dropdown-menu" role="menu" data-bind="foreach: sub">
<li>
<a href="javascript:void(0);" data-bind="text: name,
click: function() { $root.goToMenu($parent, $data); }">
</a>
</li>
</ul>
</li>
</ul>
但是,我觉得这种创建嵌套菜单的方法不好,因为假设如果我想以编程方式继续任何菜单项,那么用他的方法是不可能的?
谁能建议我处理这种情况的好方法?
【问题讨论】:
-
看起来您已经以编程方式选择了菜单项:
$root.goToMenu($parent, $data);您还可以考虑为每个菜单项添加一些唯一 ID(如果他们还没有)。这可能会简化搜索和选择菜单项。
标签: javascript jquery knockout.js