1

すべての新しい作業では、ControllerAs構文を使用しvmて、ビュー内でコントローラーを参照できるようにします。これは素晴らしいことです。

$scopeただし、構文を使用する古いコードの大部分はまだ残っています。特に、親コントローラーの関数をng-click="groupClick"通常呼び出す私のディレクティブの使用の1つ。このビューは構文で構築されているため、これはもう機能しません。groupClick$scopeContollerAs

既存のコードは次のようになります (簡略化)

<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 に答える