0

knockoutjs subscribeメソッドでは、subscribeメソッド内でプロパティの値も設定します。そのため、メソッドは2回呼び出されます。1回目はUIで値が変更されたとき、2回目はsubscribeメソッド内で値が変更されたときです。

誰もがこのケースを回避する方法を知っています。

これは私のサンプルコードです:

var ViewModel = function(first) {
    var self = this;
    self.firstName = ko.observable(first);
    self.firstName.subscribe(function(newValue) {
        alert(newValue);
        self.firstName(newValue.toUpperCase());       
    });

};

また、jsfiddlehttp://jsfiddle.net/ndkhoiits/4ABuq/に配置します

4

1 に答える 1

3

あなたの場合、おそらくゲッターとセッターで計算されたオブザーバブルが必要になるでしょう

var ViewModel = function(first) {
    var self = this;
    self.firstName = ko.observable(first);
    self.firstNameForView = ko.computed({        
        read: function () {            
            return self.firstName();
        },        
        write: function (value) {            
            self.firstName(value.toUpperCase());
        },        
        owner: this    
    });
};

次に、データバインディングでfirstNameForViewを使用します。

于 2012-12-27T11:07:13.543 に答える