你能在剑道MVVM视图中编写纯JavaScript表达式吗(就像敲除一样)?

你能在剑道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.

在下面的示例中,isDirty返回一个布尔值,具体取决于用户是否更改了任何可观察的属性

HTML

我已经用击倒完成了,但由于某些原因,我不能用剑道的MVVM来实现


这只是剑道的一个限制吗?

你不能在
数据绑定中使用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);