テキストの配列を受け入れたいという単純な状況があるので、ユーザーにコンマで区切ってデータを入力させ、KOビューモデルではko.computed
これを解析するためにを使用します。以下に示すコード。(このトリックを見せてくれたRPNに大いに感謝します)
モデルを見る
var ViewModel = function() {
this.values = ko.observableArray(["test1", "test2", "test3", "test4"]);
this.computedJoinedValues = ko.computed({
read: function() {
return this.values().join(",");
},
write: function(newValue) {
this.values(newValue.split(","));
},
owner: this
});
};
ko.applyBindings(new ViewModel());
HTML
<input data-bind="value: computedJoinedValues" />
<hr/>
<ul data-bind="foreach: values">
<li data-bind="text: $data"></li>
</ul>
これはうまく機能しますが、空白に問題があり、脳が少し切断されています。エントリごとに末尾の空白を削除したいのですがtag1, tag2
、実際には次のようにシリアル化されたのような結果になっていたので、それ[ "tag1", " tag2" ]
を行うのに適切な場所は関数だと思ったwrite
ので、これを試しました...
write: function(newValue) {
newValue = $.trim(newValue);
console.log(newValue);
this.values(newValue.split(","));
},
しかし、私はまだ配列にスペースを取得しています。誰かが私が間違っていることを特定できますか?