Javascript Knockout.js:推送项目->;指定新的DOM元素
我的视图中有一个人员列表,如下所示: 它们的名称不可编辑(列表通过ajax加载,我只希望新条目可编辑) 如何在函数Javascript Knockout.js:推送项目->;指定新的DOM元素,javascript,jquery,dom,knockout.js,Javascript,Jquery,Dom,Knockout.js,我的视图中有一个人员列表,如下所示: 它们的名称不可编辑(列表通过ajax加载,我只希望新条目可编辑) 如何在函数“addPerson”中指定我的DOM元素,使我添加的DOM元素不是readonly=“readonly”,是否可以使用Knockout 谢谢-James您可以使用可写属性扩展Peron模型: function Person(name, writable) { this.name = ko.observable(name); this.writable= ko.obs
“addPerson”
中指定我的DOM元素,使我添加的DOM元素不是readonly=“readonly”
,是否可以使用Knockout
谢谢-James您可以使用
可写属性扩展Peron
模型:
function Person(name, writable) {
this.name = ko.observable(name);
this.writable= ko.observable(writable || false);
}
然后在添加人员时,将其设置为true
:
self.addPerson = function() {
self.people.push(new Person("", true));
};
在呈现HTML时:
<input data-bind="value: name, attr: { readonly: !writable() }"
class="form-control input-sm" type="text" />
(请注意,我将绑定处理程序从text
更改为value
)您的模型和HTML应该是分开的AddPerson
不应显式创建DOM元素。向Person
对象添加readonly
布尔值,并将其绑定到DOM中的readonly
属性。然后,当向数组中添加新的Person
对象时,设置readonly
booleanfalse
和knockout将根据需要呈现DOM。另外,您的addPerson
应该创建一个新的Person
实例并将其推入数组,或者将一个新的Person
实例作为参数。它们是分开的,只需将其放在一起以使其更小,以防堆栈溢出。谢谢你的想法,我会马上尝试一下。
function Person(name, writable) {
this.name = ko.observable(name);
this.writable= ko.observable(writable || false);
}
self.addPerson = function() {
self.people.push(new Person("", true));
};
<input data-bind="value: name, attr: { readonly: !writable() }"
class="form-control input-sm" type="text" />