Mam następującą aplikację AngularJS składającą się z szablonu (index.html
), definicji aplikacji (app.js
), definicji kontrolera (controllers.js
) i strony hostingu (host.jsp
).
Kod jest w następujący sposób:
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 i gospodarza. jsp nie są pokazane dla zwięzłości i nie mają znaczenia vance.
Sterownik pobiera pewne dane z żądania Ajax, przechowuje niektóre z nich w $scope
, aby uniknąć żądania ponownego i pokazuje je użytkownikowi i czeka na dane wejściowe. Gdy użytkownik wybierze niektóre dane w widoku, zaktualizuję część zapytania adresu URL, aby odzwierciedlić zmiany wyboru. Ale chcę uniknąć kolejnych żądań Ajax, sprawdzając, czy dane są dostępne w $scope
.
Problem, przed którym stoję, polega na tym, że $scope.myAttribute
jest zawsze niezdefiniowany. Resetuje się na każde żądanie. Myślę, że niewłaściwie używam AngularJS. Jakaś wskazówka?