Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将参数传递给敲除中的子组件_Javascript_Jquery_Mvvm_Knockout.js - Fatal编程技术网

Javascript 将参数传递给敲除中的子组件

Javascript 将参数传递给敲除中的子组件,javascript,jquery,mvvm,knockout.js,Javascript,Jquery,Mvvm,Knockout.js,我有一个模板: <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 clas

我有一个模板:

<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>
有没有办法在
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>

我是个新手。我知道我可以将一个对象传递给视图模型并对该对象进行操作,因此我必须手动传递
$element
$parent
,而不是
this.object.title
this.data.title


有没有其他方法可以自动执行我所缺少的操作?

您可以按如下方式传递
$context

<item params="{ context: $context }"></item>
但是,您似乎根本没有利用上下文,您只是使用传递的
数据扩展
。因此,以下措施也可以:

<item params="{ item: $data }"></item>

viewModel: function(params) {
    $.extend(this, params.item)
},

viewModel:函数(参数){
$.extend(此参数项)
},

请参见

在这个简单的例子中,为什么要分离组件?我只是在玩击倒游戏,这是我遇到的问题,不一定是真实世界。
viewModel: function(params) {
    var ctx = params.context;
    var itemData = ctx.$data;
    $.extend(this, itemData)
},
<item params="{ item: $data }"></item>

viewModel: function(params) {
    $.extend(this, params.item)
},