Mvvm 剑道UI可观察计算属性如何强制更改通知
在使用KendoUIObservable(MVVM)进行HTML元素绑定的情况下,我偶尔会使用计算值,但我找不到在依赖值更改时强制绑定更新的方法。一个简单的例子: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. &
<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,就是这样,太棒了!