1

对于所有新工作,我使用ControllerAs语法,以便我可以vm在我的视图中引用控制器。这是伟大的。

但是,我仍然有很大一部分使用该$scope语法的旧代码。特别是我的指令之一,ng-click="groupClick"它通常会调用父控制器的groupClick函数。$scope这个视图是用ContollerAs语法构建的,所以它不再起作用了。

现有代码如下所示(简化)

<span>{{vm.somePropertyOnController}}</span>

<!-- This is provided by a template I cannot change -->
<a href="" ng-click="groupClick(item)">Test</a>

如何让<a>(通过我无法更改的模板提供)调用vm.groupClick. 理想情况下,我不想仅仅为了开始工作而添加$scope到我的控制器中groupClick

我的控制器代码:

var vm = this;

vm.somePropertyOnController = "yay vm is cool";

// i really dont want to do this! dont make me!
$scope.groupClick = function (group) { console.log("test"); }
4

1 回答 1

0

更改您的 groupClick 功能:

vm.groupClick = groupClick

function groupClick() {
    console.log('test')
}

在视图中,您必须使用 controllerAs 语法:

<div ng-controller="controllerName as ctrl">
    <span>{{ctrl.somePropertyOnController}}</span>
    <a href="" ng-click="ctrl.groupClick(item)">Test</a>
</div>
于 2015-11-11T14:04:33.987 回答