触发父可观察订阅

时间:2014-04-17 11:43:26

标签: javascript knockout.js observable

我有可观察的变量:

var mouse = ko.observable({
    x: ko.observable(),
    y: ko.observable()
});

我希望在mousex更改时调用y的订阅事件:

mouse.subscribe(function(){
    alert('changed');
});

mouse().x(5);
mouse().y(7);

但事实并非如此。你能提出什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以添加:

mouse().x.subscribe(function () { mouse.valueHasMutated() });

http://jsfiddle.net/nyothecat/x9MWp/

甚至更好:

for (var prop in mouse()) {
    if (ko.isObservable(mouse()[prop])) mouse()[prop].subscribe(function () { mouse.valueHasMutated() });
}

http://jsfiddle.net/nyothecat/x9MWp/1/

答案 1 :(得分:0)

创建一个计算的observable,它是x和y的函数:

self.mousePos = ko.computed(function() {
    return self.x() + self.y();
});

然后订阅mousePos