1

目前我有一个类似于以下计算的可观察值:

// Backed with either an observable array or an observable of an array
var underlying = ko.observable([..]);

var obs = ko.computed({
   read: function () { return underlying(); },
   write: function (items) {
      // Process items - basically, I have the parent collection quickly
      // subscribe to an observable on each item. This in and of itself
      // should likely be cleaned up, but is not the focus of this question.
      // For instance:
      items.forEach(function (i) {
         if (!subscribed(i.title)) {
           i.title.subscribe(removeItemWhenEmptyTitle);
         }
      });

      underlying(items);
   }
});

但是,我希望能够这个计算出的 observable 视为一个observable 数组,以便我可以调用obs.push(..)等等。

破解这个有点微不足道,但感觉不对,我不想复制所有现有的可观察数组方法。

obs.push = function (item) {
  var arr = obs();
  arr.push(item);
  obs(arr);
});

此外,我可能会遗漏可观察数组和可观察数组之间的关键区别。

4

1 回答 1

1

移自评论:

对您来说最简单的方法看起来就像使用 observableArray,然后订阅它来进行处理,因为您是在写入值之前对值进行机器人操作。

于 2013-10-29T13:01:31.463 回答