我正在开发一个数据审计 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
直接传递给(而不是作为匿名对象的属性值),则依赖方法确实有效。这是一个 jsfiddle ,它显示了有效的方法以及我试图避免的方法。
这是预期的行为,还是我错过了一些简单的东西?我正在使用 2012.01.322 版本。
如果我没有遗漏任何东西,我可以做些什么来在 Kendo UI 中进行这项工作(请注意,我不是 js 忍者,因此不太可能编辑他们的代码)?也许有更好的方法来实现这种行为?
希望通过将此问题重复发布到我信任的社区,我可能会得到更积极的回应