javascript - 从 Angular Directive(指令)调用父 Controller 的功能

标签 javascript angularjs

jsfiddle

我在名为 ball 的指令中有一个 ng-click。我正在尝试调用 MainCtrl 的函数 test() 并提醒球的 ng-repeat's alignment 的值。 为什么我无法识别 MainCtrl 的测试功能? 变种$范围; var app = angular.module('miniapp', []);

app.controller('MainCtrl', function($scope) {
    $scope.project = {"name":"sup"};

    $scope.test = function(value) {
        alert(value);   
    }
    $scope.test2 = function(value) {
        alert('yo'+value);   
    }

}).directive('ball', function () {
        return {
            restrict:'E',
            scope: {
                'test': '&test'
            },
            template: '<div class="alignment-box" ng-repeat="alignment in [0,1,2,3,4]" ng-click="test(alignment)" val="{{alignment}}">{{alignment}}</div>'

        };
    });

html

<div ng-app="miniapp">
   <div ng-controller="MainCtrl">
       {{project}}
       <ball></ball>
   </div>
</div>

最佳答案

您需要将 test() 方法从 Controller 传递到指令中...

<div ng-app="miniapp">
   <div ng-controller="MainCtrl">
       {{project}}
       <ball test="test"></ball>
   </div>
</div>

将指令中的&改为=:

scope: {
    'test': '=test'
}

fiddle :http://jsfiddle.net/89AYX/49/

关于javascript - 从 Angular Directive(指令)调用父 Controller 的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21821391/

相关文章:

javascript - 将超链接从用户(文本)转换为图像

Javascript - 闭包 - 词法作用域 - 如何在嵌套函数中包含循环变量数据?

angularjs - ASP.NET MVC 中的 AngularJS 是否有用于强类型化的功能?

javascript - ng-bind-html 不适用于 ng-options

javascript - 有没有办法将ejs文件的文件扩展名保留为.html?

javascript - 为什么一个只有一个数字的数组在 Javascript 中是一个数字?

angularjs - 如何将数据从编译传递到AngularJS中的链接函数?

javascript - AngularJS 从另一个数据模型访问数据模型

javascript - 为什么 md-select 没有填充 Angular ?

javascript - 普通对象 VS 模型对象的类实例