data-link で追加の属性をバインドすると、デフォルトのバインドと trigger=true が機能しなくなりました。エラーや明らかなものはありません。しかし、うまくいきません。
デフォルトのバインディング
この例 ( http://jsfiddle.net/BorisMoore/wch601L9/ ) では、属性 (例: value{:amount} ) を明示的に設定せずに "amount" プロパティがバインドされています。できます!
<td><input data-link="amount trigger=true" /></td>
バインディングを追加してこのコードを変更すると、デフォルトのバインディング「金額」がテキスト ボックスに表示されなくなります。
<td><input data-link="amount trigger=true disabled{:isSameAmountForAll}" /></td>
ここ ( http://jsfiddle.net/michaelsync/xzo15n0s/ ) は、BorisMoore の例のフォーク バージョンであり、このシナリオを示すために変更を加えました。
私が見つけた解決策は、すべてのバインディングの属性名を明示的に設定することです。
<td><input data-link="value{:amount} trigger=true disabled{:isSameAmountForAll}" /></td>
それは既知の問題ですか?
トリガー=真
テキストボックスにいくつかの数値を入力すると (例http://jsfiddle.net/michaelsync/xzo15n0s/ )、合計が更新されないことがわかります。
これを回避する方法がわかりません。これも既知の問題ですか?
この質問が明確でない場合は、お気軽にお知らせください。ありがとう!
注: なぜ 2 つの属性をバインドしたいのか疑問に思われている方のために、これは私がテストしているサンプルです。http://jsfiddle.net/michaelsync/078cazh8/2/
更新#1:
現在、JsViews ソース コードをデバッグしています。コード サンプルをデバッグ用に変更しました。
こちらがv1です。http://jsfiddle.net/michaelsync/tmwyhc7n/1/
バインディングが 1 つだけのテンプレート
<script id="personTmpl" type="text/x-jsrender">
<input data-link="amount trigger=true" /> <br/>
</script>
<div id="placeholder" ></div>
JS
var myTemplate = $.templates("#personTmpl");
var people = [
{
name: "Adriana",
amount: 10,
isSameAmountForAll: false
}
];
myTemplate.link("#placeholder", people);
ブレークポイントを設定しましたfunction parseTag(all, bind, tagName, converter, colon, html, comment, codeTag, params, slash, closeBlock, index)
ヒットしただけで、「all」パラメータの値は「{{:amount trigger=true}}」です
ここで、以下のようにバインディングを追加しました。
<script id="personTmpl" type="text/x-jsrender">
<input data-link="value{:amount} trigger=true disabled{:isSameAmountForAll}" /> <br/>
</script>
<div id="placeholder" ></div>
V2: http://jsfiddle.net/michaelsync/tmwyhc7n/2/
次に、「amount」と「isSameAmountForAll」をバインドしたため、2 つのヒットがありました。解析で「trigger=true」が欠落していることがわかります。
だから..「trigger = true」を amount 内に移動しました。
<script id="personTmpl" type="text/x-jsrender">
<input data-link="value{:amount trigger=true} disabled{:isSameAmountForAll}" /> <br/>
</script>
<div id="placeholder" ></div>
V3: http://jsfiddle.net/michaelsync/tmwyhc7n/3/
更新#2:
解析は正しいようですが、ObserverAll は機能しません。
金額の変化を検出するために以下のコードを変更しましたが、イベントはトリガーされません。
// http://stackoverflow.com/questions/25721180/summary-value-calculation-with-jsviews
var myTemplate = $.templates("#personTmpl");
var people = [
{
name: "Adriana",
amount: 10,
isSameAmountForAll: false
}
];
myTemplate.link("#placeholder", people);
$.observable(people).observeAll(function() {
console.log('weird stuff');
});