-2
"リストとコレクションを使用して作業中"に固執しています。エラーの検出に役立つ必要があります。削除ボタンが機能しません。observableArrayから要素を削除します。
私のsouceはthis codepenで確認できます。
code
"リストとコレクションを使用して作業中"に固執しています。エラーの検出に役立つ必要があります。削除ボタンが機能しません。observableArrayから要素を削除します。
私のsouceはthis codepenで確認できます。
code
this
が正確に何を追跡することが困難な場合があります。可能であれば変数を使用することをお勧めします。本当に必要なときにのみthis
を使用してください。 this
のコードは、別の提供されたコンテキストでコードを再利用できることを示すものと考えてください。たとえば、プロトタイプを使用している場合は重要です。
一般的な手法の1つは、this
にすぐに代入するコンストラクタ内に変数self
を作成し、それを使用することです。これにより、コンテキストが何であっても、関数呼び出しは意図したとおりに動作します。
revealing patternは、this
の露出を最小限に抑えるための別の方法です。
// KO WITH OBSERVABLEARRAY
function mMember(name, gender) {
this.name = name;
this.gender = ko.observable(gender);
}
function vmMember() {
var self = this;
self.MemberGender = [{
gen: 'Male',
tag: 'M'
}, {
gen: 'Female',
tag: 'F'
}];
self.members = ko.observableArray([
new mMember('Mark', this.MemberGender[0]),
new mMember('Lester', this.MemberGender[0])
]);
self.add = function() {
self.members.push(new mMember('', this.MemberGender[0]));
};
self.remove = function(member) {
self.members.remove(member);
}
}
ko.applyBindings(new vmMember());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<!-- OBSERVABLE ARRAY HERE -->
<button data-bind='click:add'>Add</button>
<table>
<th>
<tr>
<td>Name</td>
<td>Gender</td>
<td>Initial</td>
</tr>
</th>
<tbody data-bind='foreach:members'>
<tr>
<td>
<input data-bind='value:name' />
</td>
<td>
<select data-bind="options: $root.MemberGender, value: gender,optionsText: 'gen'"></select>
</td>
<td data-bind='text:gender().tag'></td>
<td>
<button data-bind='click:$root.remove'>x</button>
</td>
</tr>
</tbody>
</table>
(一つのことのために)リンク切れをレンダリングすることができないように(代わりに、警告に建設を回避するために、偽のコードをポストする)*質問自体に* [MCVE]明記してください将来の訪問者に無駄な質問。さらに、あなたが得ているエラーや自分が試してデバッグしたことについても具体的に記述してください。 – Jeroen
シンプルメイト試して '.bind(this)'を削除すると機能が終了します。 'this'は現在のコンテキストを指します。ここhttps://codepen.io/anon/pen/GZvopb –