AngularJS 在指令模板中执行控制器函数

AngularJS execute controller function in directive template

我用 AngularJS 创建了一个自定义指令, 在模板中我在控制器中调用了一个函数, 但是没用。

感谢您的帮助:)

<div ng-contorller="myCtrl">
    <ng-selectbox my-function="myfunction()" items="codes"></ng-selectbox>
</div>

myapp.controller("myCtrl", function($scpoe){
  $scope.myfunction= function(){
    alert("123");
  };
});

myapp.directive("ngSelectbox", function(){
  return {
    restrict: "E",
    scope: {
      items: "=",
      myfunction: "&"
    },
    template:
    "<div id='selectbox'>" +
    "<ul ng-repeat='item in items'>" +
    "<li ng-click='myfunction()'>{{item.TYPE}}</li>" +
    "</ul>" +
    "</div>"
  };
});

您应该将指令放入控制器包装器中,如下所示。

<div ng-controller="myCtrl">
     <ng-selectbox my-function="myfunction()" items="codes"></ng-selectbox>
</div>

不要在你使用指令的地方添加调用方括号,就像这样使用 <ng-selectbox my-function="myfunction" items="codes"></ng-selectbox>