angular.js - 用r.js打包依賴,發現angular報錯,我是使用require引入angular檔的
迷茫
迷茫 2017-05-15 16:54:34
0
2
673

angular.js檔案

define(['angular'],function(){
	angular.module("todosa",[]).controller("todosAngular",function($scope){
		$scope.sum=new Array();
		var fn=function(){
			if($scope.sum.length<10 ){
				if($scope.arr!=="" && $scope.arr!==undefined){
					$scope.sum.unshift($scope.arr);
					$scope.arr="";
				}
			}else{
				alert("已经10个了,不能在增加了。");
				$scope.arr="";
			}
		}
		$scope.todosAclick=function(){
			fn();
		};
		$scope.todosAremove=function(){
			$scope.sum=[];
			$scope.arr="";
		};
		$scope.todosAre=function(s){
			$scope.sum.splice(s,1);
		};
		$scope.akeydown=function(e){
			if(e.keyCode==13) fn();
		};
	});
})

main.js,reuiqre入口檔案

require.config({
    baseUrl:"../js/",
    paths:{
        'jquery':'lis/jquery.min',
        'avalon':'lis/avalon.min',
        'angular':'lis/angular.min'
    }
});
require(['todosAngular','todosjs','todosAvalon','todosJquery'],function(){
});

R.js

({
    baseUrl:".",
    name:'todosmain',
    paths:{
        'jquery':'lis/jquery.min',
        'avalon':'lis/avalon.min',
        'angular':'lis/angular.min'
    },
    excludeShallow:["angular","avalon","jquery"],
    out:"todos-Set.js"
})

報錯訊息

Error: [$injector:unpr] http://errors.angularjs.org/1.4.3/$injector/unpr?p0=eProvider%20%3C-%20e%20%3C-%20todosAngular
    at Error (<anonymous>)
    at http://127.0.0.1:4000/sunshine/add/js/lis/angular.min.js:6:416
    at http://127.0.0.1:4000/sunshine/add/js/lis/angular.min.js:40:375
    at Object.d [as get] (http://127.0.0.1:4000/sunshine/add/js/lis/angular.min.js:38:364)
    at http://127.0.0.1:4000/sunshine/add/js/lis/angular.min.js:40:449
    at d (http://127.0.0.1:4000/sunshine/add/js/lis/angular.min.js:38:364)
    at Object.e [as invoke] (http://127.0.0.1:4000/sunshine/add/js/lis/angular.min.js:39:124)
    at P.instance (http://127.0.0.1:4000/sunshine/add/js/lis/angular.min.js:80:122)
    at S (http://127.0.0.1:4000/sunshine/add/js/lis/angular.min.js:61:199)
    at g (http://127.0.0.1:4000/sunshine/add/js/lis/angular.min.js:54:384) 

這是我寫的todos小demo而已,想嘗試用r.js打包,但是angular不停保存。沒用r.js打包前基本上沒有報錯。
demo地址:
為打包
打包後

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(2)
某草草

1.我大概知道你的錯誤在哪裡了,看報錯的資訊應該是依賴注入的問題,你要需要把依賴的那些東西注入到你的控制器,像上面的$scope是要注入到控制其中的,應該這樣寫:App.controller("CtrlName",["$scope",function($scope){...}])因為如果不這樣的話,打包的時候就破壞了它的結構,所以會報錯;我在用手機給你回复,不方便,如果有時間我用電腦給你更詳細的解釋。

(不知道為什麼修改之後老是亂碼。。)

为情所困

在你用 r.js 打包之前,先用 ngAnnotate 處理一下依賴注入的語法(這樣你就用不著那種數組模式的語法了),當然最好使用構建工具把這個過程自動化了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板