Ich habe eine Richtlinie mit Isolat Umfang, die einen Umfang variableAngularJs: Warum wird der Bereich innerhalb meiner Direktive nicht aktualisiert, wenn asynchrone Daten eintreffen?
durch Bezug nimmtangular.module('myApp')
.directive('myDirective', function() {
return {
scope: {
items: '='
},
templateUrl: 'template.html',
replace: true,
controller: 'myDirectiveCtrl',
controllerAs: 'ctrl'
};
})
.controller('myDirectiveCtrl', function($scope) {
this.items = $scope.items;
});
Dieses in etwa so übergeben wird:
<div my-directive items='items'></div>
In der externen Steuereinrichtung Daten asynchron geladen wird, und der Umfang Elemente weitergegeben in die Richtlinie aktualisiert:
angular.module('myApp', [])
.controller('myCtrl', function($scope) {
$scope.setItems = function() {
$scope.items = [
'Here',
'There',
'Everywhere'
];
};
});
Wenn die Daten geladen werden, aktualisiert der Bereich außerhalb meiner Direktive, aber drinnen tut es
nichtMein html:
<div my-directive items='items'></div> <!-- this doesn't update -->
Outside directive
<ul ng-repeat='i in items'> <!-- this does update -->
<li>{{i}}</lu>
</ul>
<button ng-click="setItems()">Set items</button>
Wie kann ich meinen Umfang in meiner Anweisung erhalten zu aktualisieren? I Do
Danke dafür. Die Verwendung des Controllers wurde durch diesen Blogeintrag beeinflusst: http://teropa.info/blog/2014/10/24/how-ive-improved-my-angular-apps-by-banning-ng-controller.html –
Ich habe nicht gesagt, dass Sie keinen Controller verwenden sollten. Ich meinte, dass die scope-exposed-Variable nicht der Variablen des Controllers zugewiesen werden muss. –
@SteveLorimer, ich bearbeitete die Antwort mit einem anderen Ansatz mit 'bindToController', um Ihr Beispiel zu arbeiten –