2017-11-03 7 views
1

私はこのようにディレクティブを定義している:指示文でコントローラに名前を付けるにはどうすればいいですか?

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

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

}

コントローラiは1を追加することができますどのように、名前を持っていませんか?私は私のui-router設定の中でそのコントローラを参照できるように、この名前が必要です。私はこれをやろうとしました

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

     controller: "controllerName" 
} 

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

このモジュールではアプリケーションが定義されておらず、それはメインのapp.jsコントローラファイルで定義されています。

だから、うまくいきません。何が間違っていますか?ここ

答えて

0

、あなたappは次のようになります - var app = angular.module('ui-abc', [ 'xyz']); そして、あなたは1を持っていない場合は、controller: "something"を使用しないでください。 その行をスキップするとうまくいくでしょう

+0

感謝が、私の質問のポイントは、私は私のUI-ルータの設定ファイル内でこのコントローラを参照するために、このモジュールのコントローラの名前を必要としないということです。.. – uniXVanXcel

+0

私が知っている方法です - あなたが設定することができます'ng-controller =" someController "'はあなたの 'template.html'にあります –

0

あなたは以下のように 'controllerAs' と呼ばれるのparamを追加することができます:あなたのディレクティブで

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

    controller: "controllerName", 
    controllerAs: 'cName' 
    }; 
} 
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> 
関連する問題