你能否将角度表达式作为实际的ng-click函数传递

时间:2015-10-08 05:52:33

标签: javascript jquery html angularjs

我只是问这个,因为我无法在任何地方找到它。

我有一个角度对象column.addOnParams

此对象包含rowClick的子元素,因此它将是column.addOnParams.rowClick

在此子元素中包含单词myclickevent();

是否可以将其传递给ng-click

所以它如下。

<td ng-repeat="column in columns" class="" ng-click="column.addOnParams.rowClick"></td>

我已经按照上面的方式尝试过,但没有生成任何内容,它只是在页面加载后显示它。

我也尝试了以下内容,

<td ng-repeat="column in columns" class="" ng-click="{{column.addOnParams.rowClick}}"></td>

以角度引发参考错误

  

语法错误:令牌'column.addOnParams.rowClick'是意外的,   期待[:]在表达式的第3列   [{{column.addOnParams.rowClick}}]从   [column.addOnParams.rowClick}}]。

你们有什么建议吗?

将它用于它所使用的类对象时的旁注。

<td ng-repeat="column in columns" class="{{column.addOnParams.cssClass}}"></td>

以上陈述生成并完美运作。

感谢@ J-D评论,plunker解决方案就像一个魅力 Working solution

我需要使用this关键字。

2 个答案:

答案 0 :(得分:3)

您可以使用$eval来致电myclickevent()

以下示例:

在您的控制器中

$scope.myclickevent = function(rowClick) {
   //your functionality here.
}

并假设myclickevent()

中有column.addOnParams.rowClick个字符串

然后在你的html模板中

<td ng-repeat="column in columns" class="" ng-click="$eval(column.addOnParams.rowClick)"></td>

希望它会对你有所帮助。

答案 1 :(得分:2)

<td ng-repeat="column in columns" class="" ng-click="{{column.addOnParams.rowClick}}"></td>

以上代码无效。当用户点击它时,ng-click用于调用功能。您可以将参数传递给函数。 所以您更新的代码将如下所示:

<td ng-repeat="column in columns" class="" ng-click="myClickFunction(column.addOnParams.rowClick)></td>

在你的控制器中,myClickFunction绑定到范围。

$scope.myClickFunction = function(rowClick) {
   //do whatever you want to do
}

根据您的代码删除{{}} ,它会正常工作:

<td ng-repeat="column in columns" class="" ng-click="column.addOnParams.rowClick"></td>