Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 如何使用KnockoutJS从observableArray中删除项目 目标_Javascript_Knockout.js - Fatal编程技术网

Javascript 如何使用KnockoutJS从observableArray中删除项目 目标

Javascript 如何使用KnockoutJS从observableArray中删除项目 目标,javascript,knockout.js,Javascript,Knockout.js,使用KnockoutJS从observableArray中删除项目 问题 我不知道——什么也没发生 我的标记: <button data-bind="click: Summary.remove"> <i class="icon-ok"></i> </button> 我的耳环是: self.products = ko.observableArray(); 发生了什么事? 没什么。self.remove功能正在触发,但该项未发生任何变化 更

使用KnockoutJS从observableArray中删除项目

问题 我不知道——什么也没发生

我的标记:

<button data-bind="click: Summary.remove">
    <i class="icon-ok"></i>
</button>
我的耳环是:

self.products = ko.observableArray();
发生了什么事? 没什么。
self.remove
功能正在触发,但该项未发生任何变化

更多细节?
我认为我传递的详细信息已经足够了,但是如果您需要更多,请告诉我。

假设您是从foreach绑定内部调用的,我认为您应该使用$parent上下文调用remove函数:

<button data-bind="click: $parent.remove">
    <i class="icon-ok"></i>
</button>

假设您是从foreach绑定内部调用,我认为您应该使用$parent上下文来调用remove函数:

<button data-bind="click: $parent.remove">
    <i class="icon-ok"></i>
</button>

这里没有足够的信息。请发布一个JSFIDLE来演示这个问题,我很乐意提供帮助。这里没有足够的信息。请发布一个JSFIDLE来演示这个问题,我很乐意提供帮助。是的,我使用的是foreach绑定,但在我的应用程序中有多个ViewModels,我用它们的名字来调用它们,比如:“Summary”。remove;“产品”。移除;“人”,移开;我认为不可能在这些名称中使用
$parent
,因为我已经尝试过,但始终没有成功-
$parent
是未定义的。$parent是knockout提供的帮助程序,因此您可以访问
foreach
中的父上下文。您能提供更多的viewmodel结构和html标记吗帮助确定问题?凯文,是我的错。我忘记了当我在foreach循环中时,我不需要使用
Summary.something
。你的回答解决了我的问题。非常感谢你!是的,我正在使用foreach绑定,但是在我的应用程序中有多个ViewModels,我用它们的名字来调用它们,比如:“Summary.remove;“产品”。移除;“人”,移开;我认为不可能在这些名称中使用
$parent
,因为我已经尝试过,但始终没有成功-
$parent
是未定义的。$parent是knockout提供的帮助程序,因此您可以访问
foreach
中的父上下文。您能提供更多的viewmodel结构和html标记吗帮助确定问题?凯文,是我的错。我忘记了当我在foreach循环中时,我不需要使用
Summary.something
。你的回答解决了我的问题。非常感谢你!
<ul data-bind="foreach: products"> 
    <li>
    <span data-bind="text: name"></span>
    <button data-bind="click: $parent.remove">Remove</button>
    </li>
</ul>
<button data-bind="click: add">Add New </button>
var product = function (data) {
    var self = this;

    self.name = ko.observable(data);
}

var vm = function () {
    var self = this;

    self.remove = function (item) {
        self.products.remove(item);
    };

    self.add = function () {
       self.products.push(new product("new product"));   
    }

    self.products = ko.observableArray();
}

var viewModel = new vm();
viewModel.products([ new product("product a"), new product("product b")]);
ko.applyBindings(viewModel);