问题描述
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地址:为打包打包后
问题解答
回答1:1.我大概知道你的错误在哪里了,看报错的信息应该是依赖注入的问题,你要需要把依赖的那些东西注入到你的控制器,像上面的$scope是要注入到控制其中的,应该这样写:App.controller('CtrlName',['$scope',function($scope){...}])因为如果不这样的话,打包的时候就破坏了它的结构,所以会报错;我在用手机给你回复,不方便,如果有时间我用电脑给你更详细的解释。
(不知道为什么修改之后老是乱码。。。)
回答2:在你用 r.js 打包之前,先用 ngAnnotate 处理一下依赖注入的语法(这样你就用不着那种数组模式的语法了),当然最好使用构建工具把这个过程自动化了。