2012-07-25 52 views
0

我想在构造时阻止syncer属性,因为我可以将persistedObject发送到X类。阻止在knockout.js中运行计算属性(dependentobservable)

function X(persistanceObject) { 
     var self = this; 

     self.xid = -1; 
     self.syncer = ko.computed(function() { 
      // if object construction in progress then return 

      // persist properties.... 
     }, self); 
     self.y = ko.observable(43); 

     if (typeof persistanceObject !== 'undefined') { 
      ko.mapping.fromJS(persistanceObject, {}, self.y); 
     } 
    } 

回答

2

可以防止计算观察到从使用deferEvalaution选项将立即评估。

它看起来像:

self.syncer = ko.computed(function() { 
      // if object construction in progress then return 

      // persist properties.... 
}, self, { deferEvaluation: true }); 

现在,它不会评价,直到它的价值被访问。如果你没有在你的用户界面中绑定这个,那么在你的所有属性都准备好之后,你至少要调用它一次(self.syncer())。