1

我已经编写了一个大数据 API,在我们的 Web 应用程序之外的几个位置使用,我想将敲除集成到应用程序中。似乎通过淘汰赛,您可以创建一个带有可观察对象的模型。我想不通的是一种在我们的 API 中观察预先存在的值的方法。这甚至可能吗,还是我需要一个中间模型来来回推送数据?这似乎非常不方便且效率低下。我错过了一些明显的东西吗?

在下面的代码中,我想观察 name 属性。我喜欢这里最好的方法的建议吗?

编辑:首选的方法是将观察者附加到已经存在的属性,而不是围绕敲除编写我的 API 或在 API 之上编写一个额外的包装器。这个 API 与一些非浏览器应用程序共享,我认为这消除了使用敲除编写整个 API 而不增加额外复杂性的可能性。我愿意考虑其他可以满足我需要的框架。

myAPI.user = {
    ...
    get name() {
        return myAPI.user.object.name;
    },
    set name(x) {
       myAPI.user.setProperty('name', x);
    }
    ...
};
4

1 回答 1

1

您可以编写自定义computed.

var VM = function() {
   this.apiUserName = ko.computed({
       read: function() { return myAPI.user.object.name; },
       write: function(value) { return myAPI.user.setProperty('name', value); },
       owner: this
   });
}

现在,如果myAPI.user.object.name发生变化并且您有一个事件,请致电valueHasMutated.

// inside your event
vm.apiUserName.valueHasMutated();
于 2013-02-22T19:07:54.400 回答