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

AngularJS execute controller function in directive template

本文关键字:控制器 函数 执行 指令 AngularJS      更新时间:2023-09-26

我用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>"
  };
});

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

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

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