Mvvm 剑道UI可观察计算属性如何强制更改通知

Mvvm 剑道UI可观察计算属性如何强制更改通知,mvvm,kendo-ui,observable,Mvvm,Kendo Ui,Observable,在使用KendoUIObservable(MVVM)进行HTML元素绑定的情况下,我偶尔会使用计算值,但我找不到在依赖值更改时强制绑定更新的方法。一个简单的例子: <div id="test3"> 1. <span data-bind="text: addr"></span><br /> 2. <span data-bind="text: addr1"></span><br /> 3. &

在使用KendoUIObservable(MVVM)进行HTML元素绑定的情况下,我偶尔会使用计算值,但我找不到在依赖值更改时强制绑定更新的方法。一个简单的例子:

<div id="test3">
    1. <span data-bind="text: addr"></span><br />
    2. <span data-bind="text: addr1"></span><br />
    3. <span data-bind="text: addr2"></span><br />
</div>

<script>
    viewModel = kendo.observable({
        addr1: "",
        addr2: "",
        addr: function () {
            return this.addr1 + ' ' + this.addr2;
        },
        load: function () {
            this.set("addr1", "123 Main St");
            this.set("addr2", "STE 101");

            //need to let view model know to update addr binding
        }
    });

    //to demonstrate the problem of notification bind here
    kendo.bind($("#test3"), viewModel);

    viewModel.load();

    //if I bind here it works, of course
    //kendo.bind($("#test3"), viewModel);

</script>

1. 
2.
3.
viewModel=kendo.observable({ 地址1:“, addr2:“”, 地址:函数(){ 返回this.addr1+“”+this.addr2; }, 加载:函数(){ 本集(“addr1”、“123大街”); 本集(“addr2”、“STE 101”); //需要让视图模型知道更新addr绑定 } }); //在此演示通知绑定的问题 bind($(“#test3”),viewModel); load(); //如果我绑在这里,当然可以 //bind($(“#test3”),viewModel);

我有一个解决方法,直接设置“addr”元素,但这会破坏数据绑定的点。

更改addr函数以使用“get”函数检索值:

addr: function () {
    return this.get("addr1") + ' ' + this.get("addr2");
},

“get”函数是剑道可观察框架的一部分。这样使用时,当通过“get”访问的函数中的任何值在别处“set”时,剑道就会知道从函数中刷新绑定值。

Yep,就是这样,太棒了!