在数据链接中绑定附加属性时,默认的bindng和trigger=true停止工作。没有任何明显的错误或任何事情。但不起作用。
默认绑定
在这个示例(http://jsfiddle.net/BorisMoore/wch601L9/ )中,不显式地设置属性(例如值{: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>这是已知的问题吗?
trigger=true
如果您在textbox中输入一些数字(示例示例http://jsfiddle.net/michaelsync/xzo15n0s/),您将看到总的doens没有被更新。
我不知道如何解决这个问题。这也是一个众所周知的问题吗?
如果这个问题不清楚,请告诉我。谢谢!
注意:如果您想知道我为什么要绑定两个属性,那么这就是我正在测试的示例。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)设置了断点
我只被击中,"all“参数的值是”{{: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“。
所以..。我把"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-25 17:55:13
你需要
<input data-link="{:amount trigger=true:} disabled{:isSameAmountForAll}" />http://www.jsviews.com/#linked-elem-syntax
要有多个绑定,每个绑定都需要完整的语法(使用{...})。对于双向绑定,它需要使用默认的绑定目标(属性),所以不要指定目标属性:
{:amount trigger=true:}。
对于单向绑定,可以指定其他目标,如disabled:
disabled{:isSameAmountForAll}。
https://stackoverflow.com/questions/26032414
复制相似问题