【问题标题】:AngularJS: What is the best way to pass a binded scope value through ng-click?AngularJS:通过 ng-click 传递绑定范围值的最佳方法是什么?
【发布时间】:2014-11-18 10:36:53
【问题描述】:

我有以下代码:

 <li class='' ng-click="changeStatus('hello', '{{result.name}}')">

'hello' 是 changeStatus 的第一个参数,我想将绑定的 result.name 的值作为第二个参数传递。有谁知道如何做到这一点?

我尝试了 {{result.name}}, '{{results.name}}' 但似乎都不起作用。

我可能缺少一些简单的东西?


我看了看: Can you pass parameters to an AngularJS controller on creation?

但 ng-init 中的两个参数都是字符串文字。

【问题讨论】:

  • result 到底是什么?你能澄清一下吗?为什么不能像我在回答中提到的那样在 changeStatus 函数中使用 $scope.result.name 之类的东西?

标签: angularjs angularjs-directive angularjs-scope


【解决方案1】:

你不必通过它。 您可以使用以下命令在控制器中访问它:

$scope.result.name

【讨论】:

  • +1。你可能是对的。但是,但我怀疑result 不是$scope 的直接属性,因为它在&lt;li&gt; 中使用。可能是$scope.results中的一个项目@
  • @Mohayemin 向 OP 提出了一个问题。
【解决方案2】:

如果 results 是一个数组,并且您想将单个结果传递给控制器​​单击功能,则无需用花括号装饰它。 li 将如下所示:

<li ng-repeat="result in results" ng-click="changeStatus('hello', result.name)">{{result.name}}</li>

Working Fiddle

【讨论】:

    【解决方案3】:

    Angular 将ng-click 的内容视为表达式。这意味着您编写的内容就像是普通的 javascript(在大多数情况下)。对于您的示例,这意味着省略大括号(因为您已经在编写“javascript”)。

    <li class='' ng-click="changeStatus('hello', result.name)">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 2013-12-29
      • 2014-02-17
      • 2014-04-28
      • 1970-01-01
      • 2017-02-20
      • 2016-07-07
      相关资源
      最近更新 更多