在 ng-repeat 中为 ng-click 查找范围
Posted
技术标签:
【中文标题】在 ng-repeat 中为 ng-click 查找范围【英文标题】:Finding scope inside ng-repeat for ng-click 【发布时间】:2018-03-12 18:57:40 【问题描述】:我有一个非常复杂的嵌套角度对象。 现在在对象的末尾 ng-click 不起作用。
我阅读了角度范围是如何工作的,并且我得到了 ng-click 为循环中的每个项目创建一个子范围。 我没有得到的是,如果 ng-click 在范围内找不到我尝试调用的函数,它如何找到返回范围的函数。
我的意思是:
mainApp.controller('fileController', function ($scope)
$scope.function_ngclick_cant_get = function ()
// stuff here
;
$scope.getMyCtrlScope = function()
return $scope;
这是btn
<button class="btn btn-default" type="submit" value="Submit" ng-click="getMyCtrlScope().function_ngclick_cant_get();">call function</button>
如果我直接调用 'function_ngclick_cant_get' 它将不起作用。 如果我像示例中那样调用它,它会起作用。
但是为什么它会起作用呢?它们在同一范围内。
【问题讨论】:
它有效。你必须有 typeo 或 plnkr.co/edit/bXgN9MDGq1IFkOrXIUnc?p=preview 我知道它有效...我只是想了解原因。 好的,我将尝试解释更多 - 当对象包含许多嵌套的 ng-repeats 时,nc-click 停止工作。我有大约 6 个。请参阅此处:***.com/questions/46513069/… 我解决了问题 - 我只是不支持它为什么有效。 【参考方案1】:好吧,我可能是错的,因为我不确定您要做什么,但是您为什么要设置返回 $scope 的函数?你可以简单地做没有任何回报或范围。
向控制器中的 $scope 对象添加属性时,视图 (html) 可以访问这些属性。 所以你的代码应该是这样的:
<button class="btn btn-default" type="submit" value="Submit" ng-click="function_ngclick_cant_get();">call function</button>
您可以在 w3schools 上查看范围:https://www.w3schools.com/angular/angular_scopes.asp
更新:
我准备了一些虚拟代码来显示您可以使用 ng-click 多次 ng-repeats:
https://jsfiddle.net/pegla/2e4w3yuo/10/
因此,不需要返回 $scope 的函数,并且您的代码似乎在某处有问题,发布更多代码将其放在小提琴或某处,我们也许可以提供帮助。
【讨论】:
好的,我会尝试解释更多——当对象有许多嵌套的 ng-repeats 时,nc-click 停止工作。我有大约 6 个。请参见此处:***.com/questions/46513069/... 我解决了这个问题 - 我只是不支持它为什么有效。顺便说一句,直接调用该函数不起作用。不在完整代码中。 我更新了我的答案,你可以清楚地看到,我有多少次 ng-repeats 并不重要,我仍然可以访问 $scope 和上面的函数。以上是关于在 ng-repeat 中为 ng-click 查找范围的主要内容,如果未能解决你的问题,请参考以下文章
在 ng-repeat 中向 ng-click 函数添加参数似乎不起作用
使用 ng-click 更改 ng-repeat 循环内的值
angular 中父元素ng-repeat后子元素ng-click失效