2011-11-15 5 views
1

私はKnockoutJSを使用しています。私はモデルから数値を表示する入力コントロールを持っています。Knockout.JS:モデルからビューまでのさまざまな値

すべてがうまくいきますが、入力コントロールに数値を表示する前に数値を書式化したいのですが、それを数値にしておきたいのです!私は私が必要なものに番号を変換する関数toTextを()持って

<td><input class='requiredNum' type='text' data-bind="value: testNum"></input></td>

:だから、私は次のコードを持っているとしましょう。しかし、これは動作しません:

<td><input class='requiredNum' type='text' data-bind="value: toText(testNum)"></input></td>

私は(テキストから数値に変換する)問題はKnockoutjsは反対のことを行う方法を知っていないということであることを理解することができます - しかし、これはあります私はすでに別の方法でそれを扱っているので、私には問題ではありません。

解決策をお勧めしますか?

+0

私はこの答えは未承認だったことがわかります。私があなたを助けることができる問題または問題はありますか? –

+0

いいえ、答えはOK、私はそれを受け入れることを忘れた、申し訳ありません!助けてくれてありがとう ! – Serafeim

答えて

4

最も簡単な解決策は、writeable dependentObservableを使用することです。

var viewModel = { 
    number: ko.observable(10) 
}; 

viewModel.formattedNumber = ko.dependentObservable({ 
    read: function() { 
    //do formatting on this.number() here 
    return this.number().toFixed(4); 
    }, 
    write: function(newValue) { 
    //take user input and parse into a number 
    this.number(parseFloat(newValue)); 
    }, 
    owner: viewModel 
}); 

サンプル: http://jsfiddle.net/rniemeyer/8bsAF/

関連する問題