当您绑定数据链接中的其他属性时,默认的bindng和trigger = true停止工作。没有错误或任何明显的。但它不起作用。JsViews:双向绑定问题
缺省绑定
在此示例中(http://jsfiddle.net/BorisMoore/wch601L9/)中, “量” 属性不设定属性(例如值{:量})绑定明确。有用!
<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/)输入一些数字,你会看到总好好尝试一下得到更新。
我不知道如何解决这个问题。这是否也是一个已知问题?
请随时让我知道,如果这个问题不清楚。谢谢!
注意:如果您想知道为什么要绑定两个属性,那么这就是我正在测试的示例。 http://jsfiddle.net/michaelsync/078cazh8/2/
更新#1:
我现在调试运行的JsViews源代码。我修改了我的代码示例以进行调试。
这是v1。 http://jsfiddle.net/michaelsync/tmwyhc7n/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)
我拿到的只是打了 “一切” 的价值模板参数是“”{{: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/
然后我有两个安打,因为我绑定“量”和“isSameAmountForAll” ..你看到“触发=真”中缺少解析。
所以..我在数量内移动了“trigger = true”。
<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');
});
V4:http://jsfiddle.net/michaelsync/tmwyhc7n/4/
太棒了!非常感谢! – 2014-09-26 00:57:47