【问题标题】:Angular value binding sent to ng-click function instead of value角度值绑定发送到 ng-click 函数而不是值
【发布时间】:2015-06-01 21:18:00
【问题描述】:

我在 HTML 中有一个与处理程序的链接:

<div class="menu-item" ng-repeat="pageName in pages">
    <a ng-click="routing.open('{{pageName}}')">{{pageName}}</a>
</div>

它在自制的 Angular-UI 路由工厂/助手中触发“open”函数,并将“pageName”作为参数发送。 open 方法检查是否有用于加载视图的处理程序或状态。

var availableStates = $state.get();
    if (!pages[name] || availableStates.indexOf(name) === -1) {
        alert("State or Loader for state: '{0}' does not exist!".format(name));
        return;
    }

单击警报时会显示以下消息:

但是当我查看 Web 控制台时,该值已正确设置。

我可以使用一些帮助来解决这个问题,是什么导致了这种行为以及如何解决这个问题?

【问题讨论】:

    标签: javascript jquery angularjs binding


    【解决方案1】:

    您不应该在 ng 表达式中使用 {{ }}。替换

    ng-click="routing.open('{{pageName}}')">
    

    ng-click="routing.open(pageName)">
    

    这样做的原因是您应该考虑所有已包含在 {{ }} 中的专用“类似 ng”的表达式,因为它们已经被评估为角度表达式。仅当您想告诉 angular 您希望将双括号中的内容作为角度表达式进行评估时,才应使用 {{ }}。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      相关资源
      最近更新 更多