首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从子指令调用模块控制器函数

从子指令调用模块控制器函数
EN

Stack Overflow用户
提问于 2014-10-28 18:17:55
回答 2查看 650关注 0票数 0

我第一次试在安古拉杰。

我试图创建一个指令,在单击时调用在模型的控制器函数中声明的函数。

以下是我的简化代码:http://jsfiddle.net/vnj62xn8/

联署材料:

代码语言:javascript
复制
angular.module('tasks', [])
.controller('taskCtrl', function($scope){
    $scope.complete = function(){
        console.log('parent function');
    }
})
.directive('taskList', function(){
    return {
        restrict: 'E',
        scope: {
            complete: '&'
        },
        template: '<button ng-click="complete()">Complete Task</button>',
        controller: function($scope){
            /*$scope.complete = function(){
                console.log('child function');
            }*/
        }
    }
});

HTML:

代码语言:javascript
复制
<div ng-app="tasks">
    <task-list></task-list>
</div>

因此,我查看了其他Q/A,发现这似乎是最广义的解决方案,尽管它永远不会调用taskCtrl控制器中找到的完整()函数。但是,如果没有注释,它将从指令的控制器调用complete()函数。我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-28 18:25:30

您需要按以下方式编写html:

代码语言:javascript
复制
<div ng-controller="taskCtrl">
    <task-list complete="complete()"></task-list>
</div>

下面是指向更新的http://jsfiddle.net/paila/vnj62xn8/4/的链接

票数 0
EN

Stack Overflow用户

发布于 2014-10-28 18:35:16

只需将代码更改为:

代码语言:javascript
复制
.directive('taskList', function(){
    return {
        restrict: 'E',
        scope: {
            complete: '&'
        },
        template: '<button ng-click="complete()">Complete Task</button>',
        controller: 'taskCtrl' // Here you are referencing the taskCtrl
    }
});

您只需在控制器分配中引用现有控制器即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26615612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档