我试图将可见属性和文本绑定到kendo ui菜单。我使用MVVM框架。当我在viewModel中更改属性时,子菜单项不可见不起作用。这是来自fiddle example的HTML代码:
<ul id="menu" data-role="menu">
<li>
<span class="fa fa-globe"></span>
Map
<ul>
<li><a href="#/home/index"><span class="fa fa-home"></span>Index</a></li>
<li><a href="#/home/about"><span class="fa fa-info"></span>Info</a></li>
</ul>
</li>
<li data-bind="visible: isLogout">
<a href="#" data-bind="click: logIn">
<span class="fa fa-sign-in"></span>
Log in
</a>
</li>
<li data-bind="visible: isLogin">
<span class="fa fa-user"></span>
<span data-bind="text: userName"></span>
<ul>
<li><a href="#"><span class="fa fa-key"></span>Change password</a></li>
<li><a href="#"><span class="fa fa-tags"></span>Refresh token</a></li>
<li class="k-separator"></li>
<li><a href="#"><span class="fa fa-sign-out"></span>Log out</a></li>
</ul>
</li>
</ul>
和js:
var viewModel = kendo.data.ObservableObject({
isLogin: false,
isLogout: true,
userName: "",
logIn: function(e) {
//var text = $(e.item).children(".k-link").text();
this.userName = "Jane Smith"; //John Smith
this.isLogin = true;
this.isLogout = false;
}
});
kendo.bind($("#menu"), viewModel);
答案 0 :(得分:1)
不是将值赋给属性,而是像这样调用可观察方法set
:
var _this = this;
this.set("userName", "Jane Smith");
this.set("isLogin", true);
直接分配给属性不允许更改事件通过绑定传播。
此外,不是将两个元素的可见性绑定到两个属性,因为它们彼此相关,您可以使用visible
和invisible
绑定到同一属性的组合。
<li data-bind="visible: isLogin"></li>
<li data-bind="invisible: isLogin"></li>