在knockout中覆盖默认的toJS函数

时间:2013-06-12 15:18:44

标签: javascript knockout.js

我知道toJSON可以被覆盖为described here,但是可以提供自定义toJS功能吗?

1 个答案:

答案 0 :(得分:0)

是的,它就像编写新功能一样简单。

但是,更好的选择是在ko.toJSON内使用white-list参数。

ko.ToJSON(vm, white-list, spacing)

<强> HTML

<pre data-bind="text: ko.toJSON($root, replacer, 2)"></pre>

<强> JS

var ViewModel = function() {
   var self = this;

   self.name = ko.observable();
   self.age = ko.observable();
   self.canEatLotsOfPizza = ko.observable();
   self.sawTheNewStarTrekMovie = ko.observable();
   self.watchesWheelOfFortune  = ko.observable();

   self.replacer = function(key, value) {
      if(!key) {
         delete value.canEatLotsOfPizza;
         delete value.sawTheNewStarTrekMovie; 
         delete value.watchesWheelOfFortune ; 
      }

      return value;
   };
};

ko.applyBindings(new ViewModel());