首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从外部调用指令控制器方法

从外部调用指令控制器方法
EN

Stack Overflow用户
提问于 2017-11-09 10:57:26
回答 1查看 565关注 0票数 0

我编写了一个提供选项卡功能的指令,我使用了最新版本的AngularJS (v1)。在我的指令中,我有一个向子指令公开api的控制器,该范围在所有指令中都是隔离的:

父指令

代码语言:javascript
复制
scope: {},
controller: function($scope) {
   $scope.values = [];

   this.addValue = function(value) {
        $scope.values.push(value);
   }
}

关于链接函数的儿童指令

代码语言:javascript
复制
scope: {},
transclude: true,
template: '<div ng-transclude></div>',
replace: true,
link: function(scope, element, attr, parentCtrl)
{
    parentCtrl.addValues('test')
}

在子指令中,我有一个带有自己的控制器的自定义html:TestCtrl

代码语言:javascript
复制
function TestCtrl($scope){
    var vm = this;
    ... other logic
}

Implementation

代码语言:javascript
复制
<parent>
   <child>
      <div ng-controller="TestCtrl as t">
          <button ng-click="addValues('new_test')"></button>
      </div>
   </child>
</parent>

我需要调用"addValues“方法(内部指令控制器)点击我的按钮。

如何组织代码来制作这个?

EN

Stack Overflow用户

回答已采纳

发布于 2017-11-09 12:15:36

代码语言:javascript
复制
var module = angular.module('app', []);

module.controller('root', function ($scope) {
    $scope.test = function () {
        console.log('i am clicked');
    }
});

module.component('child', {
    template: '<button type="button" data-ng-click="$ctrl.click()">Click me</button>',
    controller: myController,
    bindings: {
        onClick: '&'
    }
});

function myController() {
    var ctrl = this;
    ctrl.click = function () {
        this.onClick();
    }
}
代码语言:javascript
复制
<html>

<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js"></script>
</head>
<body data-ng-app="app">

    <div data-ng-controller="root">
        <child data-on-click="test()"></child>
    </div>
</body>
</html>

这只是一个例子,你可以读更多的这里。希望这能有所帮助。

MAy虽然它将是有用的阅读关于角角的最佳实践这里

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

https://stackoverflow.com/questions/47200049

复制
相关文章

相似问题

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