Ich habe die folgende AngularJS-Anwendung, bestehend aus einer Vorlage (index.html
), einer App-Definition (app.js
), einer Controller-Definition (controllers.js
) und einer Hosting-Seite (host.jsp
).
Der Code lautet wie folgt:
search.jsp
<div class="container-fluid" ng-app="facetedSearch">
<div class="row-fluid" ng-view>
</div>
</div>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
<script src="/resources/js/page/search/app.js"></script>
<script src="/resources/js/page/search/controllers.js"></script>
app.js
angular.module('MyApp', []).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/', {templateUrl:'/index.html', controller: MyController}).
otherwise({redirectTo: '/'});
}]);
controller.js
var MyController=['$scope','$http','$location',function ($scope, $http, $location) {
//do some fancy stuff
if($scope.myAttribute===undefined){
$scope.myAttribute=someDataFromHttpRequest;
}
$location.search(someParameters);
}];
index.html und Wirt. jsp werden der Kürze halber nicht gezeigt und sind irrelevant Vance.
Der Controller erhält einige Daten von Ajax Anfrage, speichert einige davon in der $scope
, um zu vermeiden, es erneut anfordert und das zeigt es dem Benutzer und wartet auf Eingabe. Wenn der Benutzer einige Daten in der Ansicht auswählt, aktualisiere ich den URL-Abfrageteil, um Auswahländerungen widerzuspiegeln. Aber ich möchte nachfolgende Ajax-Anfragen vermeiden, indem ich überprüfe, ob die Daten im $scope
verfügbar sind.
Das Problem, mit dem ich konfrontiert bin, ist, dass die $scope.myAttribute
immer undefiniert ist. Es wird bei jeder Anfrage zurückgesetzt. Ich denke, ich missbrauche AngularJS. Irgendeine Ahnung?