【发布时间】:2015-03-04 19:43:05
【问题描述】:
嗨,伙计,我一直在努力解决这个问题,但我是 KnockoutJS 的菜鸟。这个想法是您添加一个输入,然后它接下来会显示自己的设置,例如名称 attr 占位符、必需等,但我遇到了几个问题。
我已经设法让一些工作,但由于某种原因 required 总是正确的。我遇到的另一个问题是添加更多 - 我是否正确地说我需要在 js 中添加更多可观察对象?我可以不做某种循环吗?这是我的代码,请帮忙。
<div class="input-row">
<div class="input-item">
<input type="text" data-bind="attr: { name: itemName, placeholder: itemPlaceholder, value : itemValue, required : itemRequired }" />
</div>
<div class="input-settings">
name:
<input type="text" data-bind="value: itemNameSetting">
<br/>
placehoder:
<input type="text" data-bind="value: itemPlaceholderSetting">
<br/>
required:
<select data-bind="value: itemRequiredSetting">
<option value="true">true</option>
<option value="false">false</option>
</select>
<br/>
maxlength:
<br/>
defaultvalue:
<input type="text" data-bind="value: itemValueSetting">
<br/>
</div>
</div>
<button>+ ADD MORE INPUTS</button>
JS
var ViewModel = function() {
this.itemNameSetting = ko.observable();
this.itemPlaceholderSetting = ko.observable();
this.itemRequiredSetting = ko.observable();
this.itemValueSetting = ko.observable();
this.itemName = ko.pureComputed(function() {
return this.itemNameSetting();
}, this);
this.itemPlaceholder = ko.pureComputed(function() {
return this.itemPlaceholderSetting();
}, this);
this.itemRequired = ko.pureComputed(function() {
return this.itemRequiredSetting();
}, this);
this.itemValue = ko.pureComputed(function() {
return this.itemValueSetting();
}, this);
};
ko.applyBindings(new ViewModel());
【问题讨论】:
-
你为什么用
pureComputed复制每个...Settingobservable? -
正如我所说,我对此完全陌生,这个想法是动态添加更多输入,旁边有自己的一组设置。
-
“嗯,这似乎是个好主意”是完全有效的 :) 我可能从你的代码示例中看不到另一个原因,所以问一下也无妨。跨度>