【发布时间】:2012-04-04 01:02:13
【问题描述】:
我正在开发一个数据审计 Web 应用程序,它有一个模型,其中包含多个由旧值、新值和当前值字段组成的字段集。当前值是一个计算字段(按 KO 术语),它使用相当简单的逻辑来决定是否应将旧值或新值用于当前值(基本上如果有新值则使用它,否则显示旧值)。整个表单中包含大约 20 个这样的字段集,我想避免为所有这些单独调用 kendo.bind。
这是我希望能够做的一个例子(文档有点说应该有效,但没有):
<div id="practiceSection">
<div id="phoneNumber">
<h4>Phone Number</h4>
<span>Display Value:</span>
<input id="displayPhoneNumber" data-bind="value: phoneNumber.DisplayValue"/><br/>
<span>Old Value:</span>
<input id="oldPhoneNumber" data-bind="value: phoneNumber.OldValue"/><br/>
<span>New Value:</span>
<input id="newPhoneNumber" data-bind="value: phoneNumber.NewValue"/><br/>
</div>
</div>
还有 javascript:
String.IsNullOrEmpty = function(value) {
var isNullOrEmpty = true;
if (value) {
if (typeof (value) == 'string') {
if (value.length > 0)
isNullOrEmpty = false;
}
}
return isNullOrEmpty;
}
function FieldBlock(oldValue, newValue) {
this.OldValue = oldValue;
this.NewValue = newValue;
this.DisplayValue = function() {
var newValue = this.get("NewValue");
if (String.IsNullOrEmpty(newValue))
return this.get("OldValue");
return newValue;
};
}
kendo.bind($("#practiceSection"), kendo.observable({
phoneNumber: new FieldBlock("111-111-1111", null)
}));
上面的代码导致FieldBlock.DisplayValue 始终返回未定义。奇怪的是,如果我将FieldBlock 对象直接传递给kendo.observable(而不是作为匿名对象的属性值),则依赖方法确实有效。 Here is a jsfiddle 展示了有效的方法以及我试图避免的方法。
这是预期的行为,还是我遗漏了一些简单的东西?我正在使用 2012.01.322 版本。
如果我没有遗漏任何东西,我可以做些什么来在 Kendo UI 中完成这项工作(请注意,我不是 js 忍者,所以不太可能编辑他们的代码)?也许有更好的方法来实现这种行为?
希望通过double posting这个问题向我信任的社区提出,我可能会得到更积极的回应
【问题讨论】:
标签: javascript mvvm kendo-ui