如何在Angular的指令中为控制器命名?

时间:2017-11-03 06:27:46

标签: angularjs controller angular-ui-router directive

我有这样定义的指令:

angular
    .module('ui-abc', [ 'xyz'])
    .directive('computer', compute);

function compute( item) {
    return {
        restrict: "EA",
        templateUrl: '../elements/src/template.html',
        scope:{ qwerty : '=',}    
        controller: ['$scope','$sce',  {   
.........

}

控制器没有名称,我该如何添加?我需要这个名字,以便我可以在我的ui-router配置中引用该控制器。我试着这样做

function compute( item) {
    return {
        restrict: "EA",
        templateUrl: '../elements/src/template.html',

        controller: "controllerName"
}

app.controller("controllerName", function(){......
....

App未在此模块中定义,它在主app.js控制器文件中定义。

所以,它不起作用,我有什么不对?

3 个答案:

答案 0 :(得分:0)

在这里,您 app 将是 - var app = angular.module('ui-abc', [ 'xyz']); 如果您没有controller: "something",请不要使用pthread_kill。如果你只是跳过那条线就没关系。

答案 1 :(得分:0)

您可以添加名为'controllerAs'的参数,如下所示:

function compute( item) {
   return {
    restrict: "EA",
    templateUrl: '../elements/src/template.html',

    controller: "controllerName",
    controllerAs: 'cName'
  };
}

答案 2 :(得分:0)

在你的指令中,你可以放一个名为controllerAs的参数

directive.js

function compute( item) { return {
  restrict: "EA",
  templateUrl: '../elements/src/template.html',
  controller: 'controllerName',
  controllerAs: 'vm'
};}

您现在可以在template.html

中将控制器称为vm

template.html

<body><h1>{{ vm.variableName }}</h1></body>