Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
如何在每次尝试更新视图时阻止创建另一个Knockout.js ViewModel副本?_Knockout.js_Knockout 2.0 - Fatal编程技术网

如何在每次尝试更新视图时阻止创建另一个Knockout.js ViewModel副本?

如何在每次尝试更新视图时阻止创建另一个Knockout.js ViewModel副本?,knockout.js,knockout-2.0,Knockout.js,Knockout 2.0,每次单击[add]链接并将另一个文本框添加到以下HTML时,我都会尝试更新我的ViewModel: <a href="" data-bind="click: addItem">[add]</a> <div id="items"> <input class="item" type="text" data-bind="value: searchRequest.Items[0].ItemName"/> </div> 我知道,但

每次单击[add]链接并将另一个文本框添加到以下HTML时,我都会尝试更新我的ViewModel:

<a href="" data-bind="click: addItem">[add]</a>
 <div id="items">
     <input class="item" type="text" data-bind="value: searchRequest.Items[0].ItemName"/>
 </div>
我知道,但没用

我怎样才能解决这个问题


先谢谢你

您使用的是
knockout
功能,但没有使用它。您不需要手动创建
文本框
敲除
将为您完成。制作
项目
数组-
可观察数组
并将项目推到其中:

var ViewModel = function() {
    var self = this;
    self.searchRequest = {
        Items: ko.observableArray([{
            ItemName: ko.observable("")}])
    };

    self.addItem = function() {
        self.searchRequest.Items.push({
            ItemName: ko.observable(""),
        });
    };
}

ko.applyBindings(new ViewModel());
然后使用
foreach
绑定呈现

<a href="#" data-bind="click: addItem">[add]</a>
<div data-bind="foreach: searchRequest.Items" id="items">
    <input class="item" type="text" data-bind="value: ItemName"/>
</div>


下面是一个工作示例:

您正在使用
淘汰
,但未使用它的是功能。您不需要手动创建
文本框
敲除
将为您完成。制作
项目
数组-
可观察数组
并将项目推到其中:

var ViewModel = function() {
    var self = this;
    self.searchRequest = {
        Items: ko.observableArray([{
            ItemName: ko.observable("")}])
    };

    self.addItem = function() {
        self.searchRequest.Items.push({
            ItemName: ko.observable(""),
        });
    };
}

ko.applyBindings(new ViewModel());
然后使用
foreach
绑定呈现

<a href="#" data-bind="click: addItem">[add]</a>
<div data-bind="foreach: searchRequest.Items" id="items">
    <input class="item" type="text" data-bind="value: ItemName"/>
</div>


下面是一个工作示例:

您可以组合一个JSFIDLE来显示您的问题吗?我无法用你帖子中的代码重新解释你的问题,因为你还没有展示如何创建
ViewModel
,以及如何创建主
applyBindings
你能把一个jsfiddle放在一起显示你的问题吗?我无法用你帖子中的代码重新编写你的问题,因为你还没有演示如何创建
ViewModel
以及如何创建主
applyBindings
非常感谢你,兄弟。成功了。正如你所知道的,我对Knockout.js很陌生。昨天我花了很多时间在这件事上,考虑了各种各样的疯狂的解决办法,但是我知道有一个更简单的方法。再一次,谢谢!!!非常感谢你,兄弟。成功了。正如你所知道的,我对Knockout.js很陌生。昨天我花了很多时间在这件事上,考虑了各种各样的疯狂的解决办法,但是我知道有一个更简单的方法。再一次,谢谢!!!