2017-08-23 35 views
1

私は本の練習を続けているので、間違いがあるかどうかは分かりません。 私は同じ名前の関数を持つ2つのコントローラの両方を持っている:AngularJSネストされたコントローラ - 外部コントローラの関数を呼び出す方法

<div ng-controller="externalController as Ext"> 
    <div ng-controller="innerController"> 
    <button ng-click="Ext.aFunction()>Button</button> 
    </div> 
</div> 

これは私のために動作しません:本で

app.controller('externalController', ['$scope', function(scope){ 
    scope.aFunction(){ 
    //Some code... 
    }; 
}]); 

app.controller('innerController', ['$scope', function(s){ 
    s.aFunction(){ 
    //Some code... 
    }; 
}]); 

、外部コントローラの機能は、このようにcallesです私は間違いをしているのか、コードに何か問題があると誰にでも教えてくれますか? ありがとうございました。 マウロ

答えて

0

基本的にはあなたは、構文としてのコントローラを使用している、とあなたはthisをコントローラにバインドされるべきではなく、コントローラ$scopeaFunction有界。

this(文脈)と、使用controller asにコントローラcontext(この)そのalias

app.controller('externalController', [function() { 
    var Ext = this; 
    Ext.aFunction = function() { 
    alert('Function Called'); 
    //Some code... 
    }; 
}]); 

app.controller('innerController', [function() { 
    var inner = this; 
    inner.aFunction = function() { 
    //Some code... 
    }; 
}]); 

Working Plunker

+0

を経由してHTMLに露出することができますしてください囲まれなければならないcontrollerAs構文コントローラ変数やメソッドを使用してこの質問に私を助けてください:https://stackoverflow.com/questions/45893716/how-to-store-reference-of-all-parents-for-each-of-the-nested-child –

+0

ありがとうヘルプ –

+0

@M auroGhigliaはこの答えによってあなたを助けましたか? –

関連する問題