javascript - 每次单击 ngRoute url 后都会调用 AngularJS Controller

标签 javascript angularjs

我对下面的代码有问题。当我转到 main Controller url #/ 时,Angular 自然会调用主 Controller - 它执行 AJAX 请求。问题是,当我单击 #/some-url,然后再次单击 #/ url 时,会再次执行此 AJAX 请求,由于性能原因,这是不希望且不必要的。我以为 Controller 只被调用一次,但看起来情况并非如此,至少对于 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;

    }]);

关于javascript - 每次单击 ngRoute url 后都会调用 AngularJS Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30775932/

相关文章:

javascript - ReactJS Keydown 输入

javascript - 如何更改跨度显示样式,同时更改该跨度的 innerHTML

javascript - promise 链无法正确执行

javascript - 如何禁用 $logProvider?

c# - 在代码隐藏中从 Page_Load 调用 javascript 函数

javascript - Google 云端硬盘选择器 - 允许创建文件夹

AngularJS,解析和未知提供者

AngularJS:在Controller中使用指令元素

javascript - Angularjs 资源多参数

html - 屏幕设计在 Windows Phone html5 应用程序的 Angular 导航中混合