8
我有一個模板:傳遞PARAMS兒童組件在淘汰賽
<template id="item-list">
<form action="" data-bind="submit: addItem">
<input type="text" name="addItem" data-bind="value: newItem">
<button type="submit">Add Item</button>
</form>
<ul class="item-list" data-bind="foreach: items">
<item params="title: title,
$element: $element,
$data: $data,
$parent: $parent"></item>
</ul>
</template>
<template id="item">
<li class="item" data-bind="text: title, click: $parent.removeItem"></li>
</template>
<item-list params="items: items"></item-list>
並與一些邏輯幾個部分組成:
function Item(title) {
this.title = title
}
ko.components.register('item-list', {
viewModel: function(params) {
this.items = ko.observableArray(params.items)
this.newItem = ko.observable('')
this.addItem = function() {
this.items.push(new Item(this.newItem()))
}
this.removeItem = function(a) {
this.items.remove(a.$data)
}.bind(this)
},
template: {element: 'item-list'}
})
ko.components.register('item', {
viewModel: function(params) {
$.extend(this, params)
},
template: {element: 'item'}
})
function ViewModel() {
this.items = [
new Item('One'),
new Item('Two'),
new Item('Three')
]
}
var vm = new ViewModel()
ko.applyBindings(vm, document.body)
有沒有辦法直接在foreach
通過項目所以我不必這樣做?
<ul class="item-list" data-bind="foreach: items">
<item params="title: title,
$element: $element,
$data: $data,
$parent: $parent"></item>
</ul>
而恰恰是這樣的:
<item params="$context"></item>
我是新來的淘汰賽。我知道我可以將一個對象傳遞給視圖模型並對該對象進行操作,因此,我將不得不做或this.$data.title
而不是this.title
,而我仍然必須手動通過$element
和。
是否有任何其他方式來自動化我失蹤?
在這個簡單的例子,你爲什麼會在所有分離的組件? – connexo
我只是玩Knockout,這是我遇到的一個問題,它不一定是現實世界。 – falafel99