2016-06-16 13 views
1

読み取り機能を呼び出す方法を知りたいと思います。値を書き込むとき:valueViewは書き込み関数を呼び出しますが、関数の最後にread関数を呼び出す必要があります。ノックアウトの読み方を警告する方法がいくつかありますか?ノックアウトでコール読み取り関数を呼び出す

観察できるから (取得)を読む
<input type="text" data-bind="value: valueView" placeholder="VALUE"> 

self.valueView = ko.pureComputed({ 
     read: function() { 
     var value = “John”; 
     return value; 
     }, 
     write: function (value) { 
     some code; 
     callRead() ¿??? 
     }) 

答えて

0

あなたは単に持つ関数としてそれを呼び出すことで、現在の値を読み取ることができますパラメータなし。

self.valueView() self.valueView(someValue)someValueを渡す書き込み機能を実行します。

またはいすなわちself.valueView.valueHasMutated()

1

は、「関数を呼び出す」ことによって行うことができます。 (設定)を書くことは、値を渡すことによって行うことができます。

サブスクリプションを作成せずに計算内の値を取得するには、peekメソッドを使用できます。

var myObservable = ko.observable(1); 
 
console.log(myObservable()); // Prints 1 
 

 
myObservable(2); 
 
console.log(myObservable()); // Prints 2 
 

 
console.log(myObservable.peek()); // Also prints 2
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

あなたはこれが観測documentation page書き込み可能なノックアウト上の例で使用されて見ることができます:

this.firstName = ko.observable('Planet'); 
this.lastName = ko.observable('Earth'); 

this.fullName = ko.pureComputed({ 
    read: function() { 
    return this.firstName() + " " + this.lastName(); 
    }, 
    write: function (value) { 
    var lastSpacePos = value.lastIndexOf(" "); 
    if (lastSpacePos > 0) { // Ignore values with no space character 
     this.firstName(value.substring(0, lastSpacePos)); // Update "firstName" 
     this.lastName(value.substring(lastSpacePos + 1)); // Update "lastName" 
    } 
    }, 
    owner: this 
}); 
+0

valueHasMutated方法を使用して他の依存観測/ computedsを再評価し、更新するために計算を強制することができますが、私が書き込みだとき、私はいくつかのコードを実行する必要があります。 – gvivetapl

+0

計算した変更があったときにロジックを実行したい場合は、 'subscribe'を使うことをお勧めします。 'self.valueView.subscribe(function(newValue){/ * logic * /})'です。古い値を使用する必要がある場合は、 'beforeChange'オプションを使用してください。 – user3297291

+0

読み書きの際にロジックを実行したい。私は例を見ることができますが、それは2つの観測値を使用しています。 – gvivetapl

関連する問題