2016-05-16 13 views
1

Ich habe eine einfache Anweisung wie folgt aus:Angular 1: Referenzierung Controller-Objekt innerhalb Vorlage

myApp.directive('myDirective', function() { 
    var controller = ['$scope', function($scope) { 
    function init() { 
     this.name = "Sim"; 
     this.age = 6; 
    } 
    init(); 
    }]; 
    //define the directive object 
    var directive = {}; 
    directive.controller = controller; 

    directive.restrict = 'E'; 
    directive.templateUrl = "hello.html"; 
    directive.controllerAs= 'cus';//defining a name to the controller. 
    return directive; 
}); 

In meinem HTML-Vorlage I wie unten Controller Variablen verweisen möchten (bitte beachten Sie den Controller wie oben cus verwiesen wird):

<div> 
    <div>Name: {{cus.name}}</div> 
    <div> Age: {{cus.age}}</div> 
</div> 

Hier ist mein plunk mit dem Problem

Warum ist dieser Ausschnitt funktioniert nicht?

+0

ich kann in dem Controller sehen, dass Sie den Gültigkeitsbereich injizieren, aber nichts ist mit dem Rahmen geschrieben? – thsorens

+0

Ich möchte den Wert im Controller-Objekt und nicht in seinem Bereich speichern. https://toddmotto.com/digging-into-angulars-controller-as-syntax/ – Cyril

+1

anscheinend eine Weile, da ich mit eckigen arbeitete;) Aber die $ Scope sollte wahrscheinlich nicht injiziert werden, es ändert nichts in Ihrem case though – thsorens

Antwort

2

Das mögliche Problem ist die Verwendung von "this". Verwenden Sie anstelle von 'this' die Variable controllerAs.

Ex:

var cus = this; 

function init() { 
     cus.name = "Sim"; 
     cus.age = 6; 
    } 

init(); 
+0

Danke @Sarathy Du hast es genagelt Ich habe nie bemerkt, dass innerhalb der init() das Fenster gemeint ist. Für diejenigen, die in eine ähnliche Falle fallen können ist hier die feste Plunk http://plnkr.co/edit/H9EoLR?p=preview. – Cyril

Verwandte Themen