首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JsViews :双向绑定问题

JsViews :双向绑定问题
EN

Stack Overflow用户
提问于 2014-09-25 06:53:43
回答 1查看 815关注 0票数 0

在数据链接中绑定附加属性时,默认的bindng和trigger=true停止工作。没有任何明显的错误或任何事情。但不起作用。

默认绑定

在这个示例(http://jsfiddle.net/BorisMoore/wch601L9/ )中,不显式地设置属性(例如值{:amount} ),就绑定"amount“属性。它起作用了!

代码语言:javascript
复制
<td><input data-link="amount trigger=true" /></td>

如果通过添加附加绑定来更改此代码,默认的绑定“量”将不再显示在文本框中。

代码语言:javascript
复制
<td><input data-link="amount trigger=true disabled{:isSameAmountForAll}" /></td>

这里(http://jsfiddle.net/michaelsync/xzo15n0s/)是我的BorisMoore示例的分叉版本,我做了这些更改以显示这个场景。

我找到的解决方案是显式地设置所有绑定的属性名。

代码语言:javascript
复制
<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/

只有一个绑定模板

代码语言:javascript
复制
<script id="personTmpl" type="text/x-jsrender">
    <input data-link="amount trigger=true" /> <br/>
</script>

<div id="placeholder" ></div>

JS

代码语言:javascript
复制
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}“

现在,我添加了以下附加绑定。

代码语言:javascript
复制
<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“移到了金额里。

代码语言:javascript
复制
<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不起作用。

我更改了下面的代码以检测数量的变化,但是事件不会被触发。

代码语言:javascript
复制
// 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/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-25 17:55:13

你需要

代码语言:javascript
复制
<input data-link="{:amount trigger=true:}  disabled{:isSameAmountForAll}" />

http://www.jsviews.com/#linked-elem-syntax

要有多个绑定,每个绑定都需要完整的语法(使用{...})。对于双向绑定,它需要使用默认的绑定目标(属性),所以不要指定目标属性:

{:amount trigger=true:}

对于单向绑定,可以指定其他目标,如disabled

disabled{:isSameAmountForAll}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26032414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档