मेरे पास एक टेम्पलेट (index.html
), एक एप परिभाषा (app.js
), एक नियंत्रक परिभाषा (controllers.js
) और एक होस्टिंग पृष्ठ (host.jsp
) से बना निम्नलिखित AngularJS अनुप्रयोग है।
कोड इस प्रकार है:
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 और मेजबान। jsp brevity और उनके irrele के लिए नहीं दिखाया जाता है वेंस।
नियंत्रक को अजाक्स अनुरोध से कुछ डेटा मिलता है, इसे फिर से अनुरोध करने से बचने के लिए $scope
में कुछ स्टोर करता है और इसे उपयोगकर्ता को दिखाता है और इनपुट के लिए इंतजार करता है। जब उपयोगकर्ता दृश्य में कुछ डेटा चुनता है, तो मैं चयन परिवर्तनों को दर्शाने के लिए URL क्वेरी भाग अपडेट करता हूं। लेकिन मैं $scope
में डेटा उपलब्ध है या नहीं, यह जांच कर बाद के अजाक्स अनुरोधों से बचना चाहता हूं।
मुझे जिस समस्या का सामना करना पड़ रहा है वह यह है कि $scope.myAttribute
हमेशा अनिर्धारित है। यह हर अनुरोध पर रीसेट करता है। मुझे लगता है कि मैं AngularJS का दुरुपयोग कर रहा हूँ। कोई सुराग?