テンプレート(index.html
)、アプリ定義()、コントローラ定義(controllers.js
)、ホスティングページ(host.jsp
)で構成される次のAngularJSアプリケーションがあります。
<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をホスト
search.jspを次のよう
コードです。 jspは簡潔に表示されておらず、ヴァンス。
コントローラーはAjaxリクエストから何らかのデータを取得し、$scope
にそのデータの一部を格納し、再度要求しないようにしてユーザーに表示し、入力を待ちます。ユーザーがビュー内のデータを選択すると、URL変更部分を更新して選択の変更を反映します。しかし、データが$scope
で利用可能かどうかをチェックすることによって、その後のAjaxリクエストを回避したいと思います。
私が直面している問題は、$scope.myAttribute
が常に定義されていないことです。リクエストごとにリセットされます。私はAngularJSを悪用していると思う。どんな手掛かり?