2
私は入力フィールドを動的に拡大することを目指しています。入力フィールドに入力を開始するときには、新しい空のフィールドがその下に表示されます。observableを含むobservableArrayを動的に拡大する
私はこのようなことを期待していました。
function Model() {
// Build a basic observable array
this.inputs = ko.observableArray();
// Whenever this changes, or on initial creation of this computed
// add a new empty field if the last one has any text in it.
ko.computed(function() {
var len = this.inputs().length;
// If there are no fields (initial run) or the last element is falsey...
if (!len || this.inputs()[len-1]()) {
// Create a new observable and add it to the array.
this.inputs.push(ko.observable(""));
}
}, this);
}
以下は、モデルをバインドするための基本的なHTMLです。
<ul data-bind="foreach: inputs">
<li><input data-bind="textInput: $data" /></li>
</ul>
私が正しく計算されたが呼び出されません(この機能は、作成時に実行さないことを示す)が表示され、テキストボックスに入力します。
したがって、計算結果を正しく再評価するにはどうすればよいですか?ノックアウトで実際に動作する動的に成長するリストを達成するためのより良い方法はありますか?
この問題のデバッグに役立つここにある正確なコードはjsfiddleです。
これは良い解決策のように思える - が、文字列は、私の例ではバインドされたのではなく、観察可能である理由私はわかりません。あなたは詳細を教えていただけますか? – Shadow
私は、現在の実装が期待どおりに機能しなかった理由を詳細に答えを更新し、よりコンパクトなバージョン –
'' $ rawData''を私の実装で修正して代替を更新しました。あなたの他のバージョンもより効率的に見えますが、空になったら物を崩壊させることを考えていましたので、今は残しておきます。ありがとうヒープ:) – Shadow