【问题标题】:Angular JS 1.3+ One time binding for ng-bind with a ternary conditionAngular JS 1.3+ 一次绑定三元条件的 ng-bind
【发布时间】:2015-07-11 13:33:54
【问题描述】:

如果我需要对 data-ng-bind 指令中的三元条件使用一次绑定,这是否正确?

<span data-ng-bind="::model.boolean ? 'json.item.value1' : 'json.item.value2'"></span>

<span data-ng-bind="::(model.boolean ? 'json.item.value1' : 'json.item.value2')"></span>

【问题讨论】:

    标签: angularjs binding


    【解决方案1】:

    是的。整个表达式,无论它是什么,都将被解析和读取一次。

    内部发生的事情相当于:

    // If not bound
    value = $parse("model.boolean ? 'json.item.value1' : 'json.item.value2'")(scope)
    

    注意:如果model.boolean 为真,您实际上会看到字符串"json.item.value1",而不是它包含的实际值。如果要对此进行评估,则需要删除单引号',使其变为:

    <span data-ng-bind="::model.boolean ? json.item.value1 : json.item.value2"></span>
    

    【讨论】:

    • 那么假设model.boolean === true 我们还可以绑定一次吗?
    • 如果布尔值为真,您的绑定将变为'json.item.value1' 并且永远不会再更改。这能回答你的问题吗?
    • 哦,我通过您的编辑更好地理解了这个问题。括号不会改变任何东西:一次性绑定适用于整个表达式,仅仅因为它以:: 开头就足够了。我还在我的回答中添加了一条注释,因为您可能无法得到您期望的结果
    • 不客气,如果是这样,请不要忘记接受答案,以便它可以帮助社区,谢谢:)
    • 虽然我相信一次性绑定在三元条件下不起作用,因为这使它成为双向数据绑定。如果语句更改(model.boolean === false),那么一次性绑定将保持不变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    相关资源
    最近更新 更多