新的淘汰賽我試圖爲自定義元素構建一個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: $parent.name'></strong></div>
代替
<div><strong data-bind='text: name'></strong></div>
使得出現在我的網頁上鍊接的名字。
我期望在自定義元素內處理一個LinkModel對象,但它不是,它在某種程度上是「子模型」。 有人可以解釋爲什麼我必須使用$父?代碼錯了,但是爲什麼?我真的希望在我的自定義元素中有一個LinkModel對象。
非常感謝
非常感謝它的作品! – Seamus