使用另一个observable设置可观察值

时间:2015-08-26 19:35:56

标签: knockout.js

我有这个型号:

self.model {
   items: {
       Number: ko.observable(),
       Name: ko.observable(),
       NumberTwo: ko.computed(function () {
          return self.model.items.Number();
       })
   }
}

我需要使用NumberTwo上的值初始化Number,因此我创建了一个计算的observable,但它在return行上给出了一个错误。这有什么不对吗?可能是因为我没有正确引用可观察的Number

1 个答案:

答案 0 :(得分:0)

作为@ RoyJ的答案的替代方案,我更喜欢使用构造函数模式,这种模式与使用OO语言中的类类似。例如:

var Items = function() {
  var self = this;
  self.number = ko.observable();
  self.name = ko.observable();
  self.numberTwo = ko.computed({
    read: function() {
      return self.number();
    },
    write: function(newValue) {
      console.log(newValue); // Or whatever
      self.number(newValue);
    }
  });
};

var Model = function() {
  var self = this;
  self.items = new Items();
};

var Root = function() {
  var self = this;
  self.model = new Model();
};

ko.applyBindings(new Root());

明智地命名约定,我建议使用PascalCase作为构造函数,使用camelCase作为成员和变量。

使用此模式,您可以更加强大,numberTwo封装在Items视图模型中,而无需在$parent树中引用两个步骤即可访问兄弟姐妹number