如何在每次尝试更新视图时阻止创建另一个Knockout.js ViewModel副本?
每次单击[add]链接并将另一个文本框添加到以下HTML时,我都会尝试更新我的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> 我知道,但
<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很陌生。昨天我花了很多时间在这件事上,考虑了各种各样的疯狂的解决办法,但是我知道有一个更简单的方法。再一次,谢谢!!!