【问题标题】:How to call function foo("someName") using template in AngularJS?如何在 AngularJS 中使用模板调用函数 foo("someName")?
【发布时间】:2014-11-16 17:40:54
【问题描述】:

我在页面上有一些动态元素(即列表)。我想为每个元素添加 onClick 操作的处理程序,除了每个元素都应该使用指定的数据调用此处理程序。

我试过了:

js:

$scope.data = [
      {
        id: 1,
        name: "1",
        order: "10"
      },    
      {
        id: 2,
        name: "2",
        order: "20"
      },    
      {
        id: 3,
        name: "3",
        order: "30"
      }
    ];

html:

  <div ng-repeat="item in data" name="{{ 'name_' + item.id }}" ng-click="onClick({{ '\'name_' + item.id +'\'' }})" value="item">
    Item name is "{{ item.name }}"
  </div>

当我观察 dom 时,我看到了正确的 html:ng-click="onClick('name_1')",但是当我单击该行时,什么也没有发生。为什么? (另外,我在控制台中收到 angularJS 的长红色错误,说我真的错了)

我怎样才能实现我想要的?我不是说一定要用我的方法来做。可能有另一种方法 - 比我的更好(比如使用一些角度属性(比如 ng-repeat 有:$index))

【问题讨论】:

  • 为什么不能直接调用 onClick(item.id),让它自己创建所需的字符串 'name_id'?
  • 因为函数已经在其他元素中使用了。用法是:onFocus('elementName')。其他元素甚至没有 id。
  • 所以创建一个新函数来创建字符串并调用您的其他函数。
  • 也许这是个好主意,但在这种情况下不是。名称有点复杂,取决于一些因素。在angular中调用函数时是否可以格式化名称?
  • 我需要至少 5 个功能 99% 相同的内容,除了格式化输入部分。

标签: javascript angularjs angularjs-ng-repeat angularjs-ng-click angularjs-templates


【解决方案1】:

ngClick 指令需要一个表达式。您不应该在其中插入任何内容。所以应该是:

ng-click="onClick('name_' + item.id)"

【讨论】:

    猜你喜欢
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2018-02-26
    • 2013-05-13
    相关资源
    最近更新 更多