每次点击ngRoute url后调用AngularJS控制器
AngularJS controller called every time after ngRoute url is clicked
我对下面的代码有问题。当我转到控制器 url #/
main
时,Angular
自然调用主控制器 - 它执行AJAX
请求。问题是,当我单击 #/some-url
然后再次#/
url 时,此 AJAX 请求再次执行,由于性能原因,这是不希望和不必要的。我以为控制器只调用一次,但看起来并非如此,至少在ngRoute
.
angular.module('robotsApp', ['ngRoute', 'controllers'])
.config(['$routeProvider', function($routeProvider){
var root = '/static/js/partials/';
$routeProvider.
when('/', {
templateUrl: root + 'main.html',
controller: 'main as main'
}).
when('/some-url', {
templateUrl: root + 'some_template.html',
controller: 'someController'
}).
otherwise({
redirectTo: '/'
});
}]);
angular.module('controllers', [])
.controller('main', ['$http', function($http){
$http.get('/user/recent-gain-loss').success(function(data){
this.recent_gain_loss = data;
}.bind(this));
}]);
<p>{{ main.recent_gain_loss }}</p>
将数据保存到一个值中,然后检查数据是否已设置。
angular.module('values', [])
.value('recentGainLoss', {})
angular.module('controllers', ['values'])
.controller('main', ['$http', 'recentGainLoss', function($http, recentGainLoss){
if (Object.keys(recentGainLoss).length < 1) {
$http.get('/user/recent-gain-loss').success(function(data){
recentGainLoss = angular.extend(recentGainLoss, data);
});
}
this.recent_gain_loss = recentGainLoss;
}]);
相关文章:
- 尝试调用AngularJS上的函数时出错
- 如何使用onclick事件调用AngularJS控制器
- 在jQuery中调用AngularJS函数
- 在 html5 视频结束时调用 AngularJS 控制器函数
- 如何点击按钮调用angularJs服务
- 为什么更改范围获胜'不能在ng if内部工作,而是通过函数调用AngularJS
- 调用AngularJS内部<脚本>标签
- 从html调用angularjs控制器中的一个函数,但未定义范围变量
- 从Javascript调用AngularJS控制器
- 单击链接时不调用 AngularJs 控制器
- 异步调用 AngularJS 不适用于 Canvas HTML
- 从Javascript调用AngularJS方法
- 从遗留代码调用 AngularJS
- 如何从纯JavaScript方法调用AngularJS过滤器
- 未调用 AngularJS 模板 ng-change
- 正确处理调用 AngularJS $http中的错误
- 如何从事件处理程序调用 AngularJS 作用域定义的函数
- 如何从android webview调用AngularJS服务代码
- 为什么不是't正在调用AngularJS表单处理程序方法
- 未调用Angularjs资源工厂transformResponse