>>梦想乡<<

Angular学习笔记-问题列表(2016.4.7)

1、控制器中注入服务时,出问题,当前pageInit这个页面无法加载,页面无报错信息。

var homepage = angular.module('homepage');

homepage.controller('pageInit', function($scope, $state,localLibraryService) {
		alert(333333) 
		localLibraryService.getZhaopin();
		/**
                //直接运行下面这段代码没有问题,但是通过注入服务器的形式时,直接出问题,但是页面没有错误信息。
		$http.get('data/zhaopin.json').success(function(data){
		      //  $scope.zhaopin = data;
		        alert(data.showObj);
		        $scope.infoList = data.showObj;
		    }).error(function(){
		        alert("an unexpected error ocurred!");
		    });
		*/
	})

homepage.service('localLibraryService', function($scope,$http){
		this.getZhaopin = function(){
		      $http.get('data/zhaopin.json').success(function(data){
		           alert(data.showObj);
		           $scope.infoList = data.showObj;
		      }).error(function(){
		           alert("an unexpected error ocurred!");
		      });
		}
});

  后来将服务内的内容全部删除,只剩一个alert,问题依旧。直到将服务改成这样以后,才没有问题。

homepage.service('localLibraryService', function(){
        alert(123);
});

     后知后觉,问度娘方才知晓,原来$scope不能注入到服务中。

     百度知道里的答案:

     你可以注入$rootScope,$scope是不行的。只能在控制器里面才可以,factory是一个服务,你可以把他看做是一个全局变量,他是不对dom操作的,所以不能注入$scope


2、打开页面时报注入错误“Error: [$injector:modulerr]......”
     作为初学者来说,被这个错误伤透了脑筋。尤其,我是拷贝了一个完整的项目,在该项目上断断续续地进行修改、调试熟悉AngularJs。遇到这样的问题多了,慢慢的也总结出了一点点经验。其实,这个问题主要还是粗心大意导致的。(以我在玩的项目为例)

      1)检查index.html中是否有引入对应的JS文件。(index.html为启动项目时默认打开的页面)
  
<!-- *************加载登录模块*********** -->
<script  type="text/javascript"src="app/js/ngapp/app-login/app.login.module.js"></script>
<script  type="text/javascript"src="app/js/ngapp/app-login/app.login.router.js"></script>
<script  type="text/javascript"src="app/js/ngapp/app-login/app.login.controller.js"></script>
      2)检查core.module.js中是否已经将相应module注入(该js文件为APP的核心模块,需要将其他功能模块注入到里面)
angular.module('app.core', ['ionic','ui.router',
    'ngCordova',
    //***angularjs video
    "com.2fdevs.videogular",
    "com.2fdevs.videogular.plugins.controls",
    "com.2fdevs.videogular.plugins.overlayplay",
    "com.2fdevs.videogular.plugins.poster",
    //加载系统模块
    "app.sys.directive",
    "app.sys.service",
    "app.homepage", //系统首页模块
]);

 

       3)检查router.js文件中的参数配置是否准确无误。(一个APP中,路由配置的状态是唯一的,否则会报注入错误。)
angular.module('app.homepage')
.config(function($stateProvider, $urlRouterProvider) {
    //配置首页启动时的加载路由模式
    $stateProvider
        //登录->首页
        .state('homepage', {
            url: '/homepage',
            templateUrl: 'app/templates/homepage/homepage.html',
            controller: 'app.homepage.control.HomePageInit as hpinit',
        })
})

 

      4)检查control.js文件中的module名称是否正确,控制器的名称是否一致。
var homepage = angular.module('app.homepage');
homepage.controller('app.homepage.control.HomePageInit', function($scope, $state,$ionicHistory,$http) {
     //控制器内容 
})

 

posted @ 2016-02-29 18:18  文苏  阅读(259)  评论(0编辑  收藏  举报