Ho la seguente applicazione AngularJS composta da un modello (index.html
), una definizione di app (app.js
), una definizione di controller (controllers.js
) e una pagina di hosting (host.jsp
).
Il codice è il seguente:
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 e host. jsp non viene mostrato per brevità e il loro irrele Vance.
Il controller riceve alcuni dati dalla richiesta Ajax, ne memorizza alcuni nello $scope
per evitare di richiederlo nuovamente e lo mostra all'utente e attende l'input. Quando l'utente seleziona alcuni dati nella vista, aggiorno la parte della query URL per riflettere le modifiche alla selezione. Ma voglio evitare successive richieste Ajax controllando se i dati sono disponibili nello $scope
.
Il problema che sto affrontando è che il $scope.myAttribute
è sempre indefinito. Si reimposta su ogni richiesta. Penso che sto usando male AngularJS. Qualche indizio?