加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

anglejs – 角厂一直叫两次

发布时间:2020-12-17 07:33:13 所属栏目:安全 来源:网络整理
导读:我从角度调用REST服务,它总是调用工厂两次.这是工厂代码. app.factory('dataFactory',['$http',function ($http) { var urlBase = '/api'; var dataFactory = {}; dataFactory.getMyItems = function () { return $http.get(urlBase + '/MyItems'); }; retur
我从角度调用REST服务,它总是调用工厂两次.这是工厂代码.
app.factory('dataFactory',['$http',function ($http) {
    var urlBase = '/api';
    var dataFactory = {};

    dataFactory.getMyItems = function () {            
        return $http.get(urlBase + '/MyItems');
    };

    return dataFactory;
} ]);

这是从控制器调用的

app.controller('MyItemsController',['$scope','dataFactory',function ($scope,dataFactory) {            
        $scope.myItems;

        getItems();

        function getItems() {

            dataFactory.getMyItems()
                .success(function (itemsData) {
                    $scope.myItems = itemsData;
                })
                .error(function (error) {
                    $scope.status = 'Unable to load items data: ' + error.message;
                });
        }
    }
]);
我有同样的问题,你的控制器一般叫两次;因此,工厂将被召唤两次.

但是在看了这个解决方案之后:
Combating AngularJS executing controller twice

步骤1:

确保您只在(主布局视图)中添加服务和控制器一次.

例:

的index.html

<script src="../MyItemsController.js"></script>
  <script src="../MyItemsService.js"></script>

如果在执行步骤1后仍然存在问题,请转到步骤2

第2步:

有两种方法可以做到:

1.将控制器保留在您的视图(ng-controller)中,并将其从配置路由中删除,如下所示:

路由配置(通常是app.js):

app.config(['$routeProvider',function($routeProvider){
      $routeProvider.when('/',{ 
                   templateUrl: 'pages/home.html'
                   //Remove controller from here
               });
}]);

home.html的

<!-- Add the ng-controller in your view -->
    <div ng-controller="MyItemsController">
        <!-- Your stuff -->
    </div>

2.或者将控制器保留在您的配置路由中,并删除控制器
从这样看:

路由配置(通常是app.js):

app.config(['$routeProvider',{ 
                   templateUrl: 'pages/home.html',controller: 'MyItemsController' //Add the controller here

               });
}]);

home.html的

<!-- Remove the ng-controller in your view -->
    <div>
        <!-- Your stuff -->
    </div>

注意:以上解决方案也适用于ui路由器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读