私は、古い値、新しい値、および現在の値のフィールドで構成されるいくつかのフィールドセットを含むモデルを持つデータ監査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ビルドを使用しています。
私が何かを見逃していない場合、剣道UIでこれを機能させるためにできることはありますか(私はjs忍者ではないので、コードを編集することはおそらくオプションではないことに注意してください)?おそらく、この動作を実現するためのより良い方法がありますか?
この質問を信頼できるコミュニティに二重に投稿することで、より積極的な回答が得られることを願っています