2016-09-28 7 views
2

Ich habe eine benutzerdefinierte Anweisung erstellt, die Daten von einem Controller abruft.Benutzerdefiniertes Anweisungsbereichselement sichtbar, aber undefiniert

Meine Variable ist innerhalb des Umfangs Element sichtbar, aber wenn man versucht, darauf zuzugreifen, bekam ich undefined

HTML

<map borders="vm.borders"></map> 

Richtlinie

angular.module('myApp.directives') 
.directive('map', [ function() { 
    return { 
     restrict: 'E', 
     scope: { 
      borders: '=' 
     }, 
     link: function(scope, element, attrs) { 
      console.log(scope); //cfr linked image 
      console.log(scope.borders) //undefined 
     } 
    } 
}]); 

Hier der Anwendungsbereich. Es enthält die Rahmenvariable.

scope console

Was ich abrufen fehle dieser Wert grenzt?

+1

zuweisen Sie Werte 'vm.borders'? Ich sehe keine Probleme [hier] (http://jsfiddle.net/cg8e3emv/) – Pradeepb

+1

Wenn Sie ein Objekt console.log, werden die Eigenschaften nicht ausgewertet, bis Sie den Pfeil in der Konsole drücken, um das Objekt zu erweitern. Die Eigenschaftsprotokollierung zeigt an, dass der Wert zur Laufzeit beim Definieren der Protokollanweisung undefiniert ist. Ng, wenn das Problem vermieden wird. – shaunhusain

Antwort

3

konnte ich vorschlagen, eine ng-if der Richtlinie hinzuzufügen, weil zum Beispiel, wenn vm.borders von einem Versprechen bekam sind, ng-if erforderlich:

<map borders="vm.borders" ng-if="vm.borders"></map> 
+0

Einfach und klar, es funktioniert. Annahme als Antwort in 6 Minuten – Weedoze

+0

Ja, ng-wenn oft hilft. Vielen Dank. –

Verwandte Themen