knockout.js订阅没有被第一组调用

jmo*_*era 5 javascript knockout.js knockout-3.0

我有一个带有observable的简单模型类.我只是想订阅它的集合.这是我的代码:

var dto = function (data) {
    var self = this;
    self.Value1 = ko.observable(data.Value1);
    self.Value1.subscribe(function(){
         console.log('here');
    });   
};
Run Code Online (Sandbox Code Playgroud)

首次设置Value1时,不会调用console.log(即ko.observable(data.Value1)

如何设置subribe函数在初始和更改时都会发生.

nem*_*esv 14

触发subscribe初始值的功能没有真正的支持.

你可以做的是valueHasMutated在你的subscribe:之后调用该函数:

self.Value1.subscribe(function(){
     console.log('here');
}); 
self.Value1.valueHasMutated();
Run Code Online (Sandbox Code Playgroud)

或者您可以在订阅后设置初始值:

var dto = function (data) {
    var self = this;
    self.Value1 = ko.observable(); // only declare but not assign
    self.Value1.subscribe(function(){
         console.log('here');
    });   
    self.Value1(data.Value1); // assign initial value
};
Run Code Online (Sandbox Code Playgroud)