在data-bind属性中引用observable

时间:2017-12-16 06:55:32

标签: knockout.js

我尝试浏览网页和淘汰文档,但我找不到解释。我在某些地方看到:

data-bind="with: SomeProperty">

VS

data-bind="with: SomeProperty()"> // note ( )

两者有什么区别?何时使用另一个?

1 个答案:

答案 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必须是可观察的,因为您正在评估它。