ノックアウトの新機能カスタム要素用のPOCをビルドしようとしています。foreach内のカスタム要素はノックアウトのモデルではありません
モデルは単純ですが、MainModelにはLinkModelの配列が含まれています。
目標は、各LinkModelオブジェクトの1つのカスタム要素 "settings-view-link"を表示するためにリンクの配列を反復処理することです。
function LinkModel(params) {
var self = this;
self.name = ko.observable(params.name);
}
function MainModel() {
var self = this;
self.links = ko.observableArray([
new LinkModel({ name: "link1"}),
new LinkModel({ name: "link2"})
]);
};
$(function() {
//registration of the custom element
ko.components.register('settings-view-link',
{
viewModel: LinkModel,
template: "<div><strong data-bind='text: name'></strong></div>"
});
ko.applyBindings(new MainModel());
});
<div>
<ul data-bind="foreach: links">
<p data-bind="text: name"></p> <!-- handled correctly -->
<settings-view-link></settings-view-link> <!-- handled not the way I expect-->
</ul>
</div>
私は何を参照してカスタム要素で、私は$親を使用する必要がある場合ということです。私のデータバインドを期待どおりに動作させること。代わりに
<div><strong data-bind='text: name'></strong></div>
の
<div><strong data-bind='text: $parent.name'></strong></div>
を使用すると、Webページ上の私のリンクの名前を表示されます。
私は、カスタム要素内でLinkModelオブジェクトを処理すると思いますが、そうではありませんが、それは何とか「サブモデル」です。 なぜ私は$ parentを使用しなければならないのか誰かが説明できますか?コードは間違っていますがなぜですか?私は実際に私のカスタム要素の中にLinkModelオブジェクトを持つことを期待しています。
どうもありがとう
多くの感謝! – Seamus