你能在剑道MVVM视图中编写纯JavaScript表达式吗(就像敲除一样)?
在下面的示例中,isDirty返回一个布尔值,具体取决于用户是否更改了任何可观察的属性 HTML 我已经用击倒完成了,但由于某些原因,我不能用剑道的MVVM来实现你能在剑道MVVM视图中编写纯JavaScript表达式吗(就像敲除一样)?,javascript,mvvm,knockout.js,kendo-ui,Javascript,Mvvm,Knockout.js,Kendo Ui,在下面的示例中,isDirty返回一个布尔值,具体取决于用户是否更改了任何可观察的属性 HTML 我已经用击倒完成了,但由于某些原因,我不能用剑道的MVVM来实现 这只是剑道的一个限制吗?你不能在数据绑定中使用JS,但是有其他方法可以实现你想要的。 一种方法是创建两个状态消息div,并在两者上使用visible绑定。 另一种方法是使用方法获取要显示的数据 HTML: () <div class="status-message" data-bind="text:isDirty ? user.
这只是剑道的一个限制吗?你不能在
数据绑定中使用JS,但是有其他方法可以实现你想要的。
一种方法是创建两个状态消息div,并在两者上使用visible
绑定。
另一种方法是使用方法获取要显示的数据
HTML:
()
<div class="status-message" data-bind="text:isDirty ? user.nickName : user.suffix>
viewModel = new kendo.observable({
user: {
emailAddress: user.emailAddress,
firstName: user.firstName,
middleInitial: user.middleInitial,
lastName: user.lastName,
title: user.title,
suffix: user.suffix,
nickName: user.nickName
}
});
<div id="bindme">
<!-- alternative #1 -->
<input type="text" data-bind="value: user.emailAddress" />
<div data-bind="visible: isDirty">
<div class="status-message" data-bind="text: user.nickName"></div>
</div>
<div data-bind="invisible: isDirty">
<div class="status-message" data-bind="text: user.suffix"></div>
</div>
<!-- alternative #2 -->
<div class="status-message" data-bind="text: currentValue"></div>
</div>
viewModel = new kendo.observable({
isDirty: false,
user: {
emailAddress: "a",
firstName: "b",
middleInitial: "c",
lastName: "d",
title: "e",
suffix: "f",
nickName: "g"
},
currentValue: function () {
return this.get("isDirty") ? this.get("user.nickName") : this.get("user.suffix")
}
});
viewModel.bind("change", function () {
this.set("isDirty", true);
});
kendo.bind($("#bindme"), viewModel);