我尝试浏览网页和淘汰文档,但我找不到解释。我在某些地方看到:
data-bind="with: SomeProperty">
VS
data-bind="with: SomeProperty()"> // note ( )
两者有什么区别?何时使用另一个?
答案 0 :(得分:0)
在第一种情况下,SomeProperty
可以只是observable
的常规属性或viewModel
属性。 Knockout 解包并将值绑定到DOM。唯一的区别是,如果它是observable
,UI将在属性更改时更新。
var vm = {
observableProperty: ko.observable({
innerProp: 10
}),
regularProperty: {
innerProp: 10
},
update: function() {
this.observableProperty({
innerProp: 20
});
// will not update the DOM
this.regularProperty = {
innerProp: 20
}
}
}
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div data-bind="with: observableProperty">
Observable: <span data-bind="text: innerProp"></span>
</div>
<div data-bind="with: observableProperty()">
Observable with parenthesis: <span data-bind="text: innerProp"></span>
</div>
<div data-bind="with: regularProperty">
Normal: <span data-bind="text: innerProp"></span>
</div>
<button data-bind="click: update">update</button>
在第二种情况下,SomeProperty
必须是可观察的,因为您正在评估它。