在下文中,isDirty返回一个布尔值,具体取决于用户是否更改了任何可观察属性。
HTML
<div class="status-message" data-bind="text:isDirty ? user.nickName : user.suffix>
JS
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
}
});
我已经使用Knockout完成了它,但出于某种原因,我无法使用Kendo的MVVM。
这仅仅是剑道的限制吗?
答案 0 :(得分:1)
你不能在data-bind
中使用JS,但还有其他方法可以实现你想要做的事情。
一种方法是创建两个状态消息div并在两者上使用visible
绑定。
另一种方法是使用方法来显示数据。
HTML:
<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>
JS:
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);
(demo)