AngularJS bewerten $rootScope variable, die in der Richtlinie Vorlage
Habe ich eine Richtlinie erstellt ein input-Feld.
Ich brauche, um das ng-model Attribut dieses Eingabefeld, um den Wert von $rootScope
variable.
Der Grund dafür ist, dass ich will das input-Feld in das layout, und binden Sie verschiedene Modelle je nachdem, welche Seite geladen wird.
Ich dachte, ich würde setzen Sie diese Globale variable in jedem controller und access es in der Richtlinie.
ATM die variable ist hart codiert
App.run(function($rootScope){
$rootScope.mymodel = 'search.name';
})
Sowie die Richtlinie
Directives.directive('inputFilter', function(){
return{
restrict: 'E',
replace:true,
controller: function($scope, $rootScope){
console.log($scope.mymodel);
console.log($rootScope.mymodel)
},
template: '<input class="filter" type="text" ng-model="mymodel" placeholder="Nach filtern">'
}
});
Wird es so dargestellt, als
<input class="filter ng-pristine ng-valid" type="text" ng-model="mymodel" placeholder="Filter">
und der text im Eingabefeld ist der Wert der mymodel variable. Die Konsole.log zeigt
search.name
search.name
Könnte jemand bitte etwas Licht auf dieses Problem?
Vielleicht haben Sie auch einen Blick auf die Referenzierung $root in der Vorlage, die enthält einen Verweis auf den $rootScope Direktiven, die haben Ihren eigenen Bereich. Siehe - stackoverflow.com/questions/22216441/...
InformationsquelleAutor glasspill | 2013-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ich denke, Sie wollen, ist
Fiddle.
Beachten Sie, dass Sie injizieren müssen
$rootScope
in Ihrer Richtlinie:was ist der Unterschied zwischen ng-model="{{mymodel}}" und placeholder="{{mymodel}}"
1. Ihre Fiedel: {{}} sagt Winkel interpoliert den Wert. Da Ihr controller-Bereich prototypisch erbt von $rootScope, Eckige ersetzt
{{mymodel}}
mit den interpolierten Wert vonsearch.name
. 2. Sie können nicht verwenden Sie {{}}s im ng-Modell, weil Winkel nicht interpolieren ng-Modell-Werte. Das ng-Modell-Wert muss eine (belegbare) Winkel Ausdruck. (Ähnlich, ng-klicken Sie auf Wert nicht enthalten {{}}s -- es hat auch eine Angular expression). Der Wert der Platzhalter enthalten kann, die {{}}s, weil die Winkel-compiler wird es bemerken und interpolieren.also die einfache Regel ist: wenn der Angular-Dokumentation sagt, muss etwas kantigem Ausdruck, können wir nicht verwenden, die {{}}s gibt. In unserem HTML - (und Vorlagen), die wir verwenden können {{}} (solange es nicht irgendwo Eckige will, um zu sehen, kantigem Ausdruck) und Winkel wird die interpolation Magie.
Danke, das war sehr frustrierend und verwirrend
InformationsquelleAutor Mark Rajcok