2017-04-20 5 views
0

Codierung einer benutzerdefinierten Komponente in AngularJS, an die ich ein Attribut "Parentview" übergeben möchte.AngularJS benutzerdefinierte Komponente - undefined Bindung

Mein Code ist wie folgt.

Die console.log() von 'parentview' in der Steuerung meiner Komponente zeigt "undefined" ... Ich verstehe nicht warum. Vor allem, da "Benutzer" und "Limit" gut angezeigt werden.

Irgendwelche Hinweise?

Dank

dashboard.html

<div> 
    <suggested-sessions user="user" limit="3" parentview='Dash'></suggested-sessions> 
</div> 

suggestedSessions Komponente: mit @ statt <

component('suggestedSessions', { 
    bindings: { 
    user: '<', 
    limit: '<', 
    parentview: '<' 
    }, 
    template: 
    ` 
    <div class="padding-container"> 
    <session-item-by-id ng-repeat="group in $ctrl.groups | orderBy:'preview.timestamp'" group=group limit="3" parentview="$ctrl.parentview"></session-item-by-id> 
    </div> 
    `, 
    controller: function($q, $timeout, GroupService) { 
    this.$onInit = function() { 
     console.log('parent view: ', this.parentview); 
    } 
    } 
}); 
+0

hinzufügen müssen Was ist, wenn Sie Ihre console.log setzen (...) direkt in Ihrem Controller, I meinst du nicht in der Funktion $ onInit sondern außerhalb davon? – JeanJacques

+0

Das Gleiche. Eigentlich habe ich es vorher gemacht und bin zu $ ​​onInit gewechselt, weil ich dachte, das war das Problem ... aber nein –

Antwort

0

Versuchen Sie, Ihre Strings zu binden.

bindings: { 
    user: '@', 
    limit: '<', 
    parentview: '@' 
}, 

Von der AngularJS Components Dokumentation:

@ Bindungen verwendet werden kann, wenn die Eingabe ein String ist, vor allem, wenn der Wert der Bindung nicht ändert.

0

Wenn Sie eine Zeichenfolge übergeben möchte ich glaube, Sie zusätzliche Zitate

JSFiddle example

<div> 
    <suggested-sessions user="user" limit="3" parentview='"Dash"'></suggested- 
    sessions> 

</div> 
Verwandte Themen