2015-01-12 2 views
9

Se la mia direttiva utilizza "require" per usare una direttiva diversa, dicono ngModel, e gli usi isolare la portata come sono io in grado di utilizzare la sintassi bindToController ed essere ancora in grado di accedere alle iniettabili (ngModelController) da il controller?bindToController con richiede direttiva angolare

risposta

21

Come si fa a fare questo senza bindToController? Tutto ciò che fa bindToController: true è che associa la proprietà dell'ambito di isolamento scope: { prop: "=" } alla proprietà del controller: this.prop.

In entrambi i casi, il modo per passare un controllore "necessaria" sarebbe lo stesso, che è quello di require il proprio controller e impostare la proprietà o qualsiasi altra cosa, compresi gli altri controllori:

app.directive("foo", function(){ 
    return { 
    require: ["foo", "bar"], 
    controller: function(){ 
     this.doSomethingWithBar = function(){ 
     this.bar.doSomething(); 
     }; 
    }, 
    controllerAs: "ctrl", 
    bindToController: true, 
    link: function(scope, element, attrs, ctrls){ 
     var foo = ctrls[0], bar = ctrls[1]; 
     foo.bar = bar; 
    } 
    } 
}); 
+0

questo è certamente la risposta corretta e dovrebbe essere accettata –