Javascript 使用Angular.js添加控制器时出错
使用Angular.js通过Javascript 使用Angular.js添加控制器时出错,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,使用Angular.js通过UI-ROUTER设置控制器时,我遇到以下错误 Error: [ng:areq] http://errors.angularjs.org/1.4.6/ng/areq?p0=productDataController&p1=not%20aNaNunction%2C%20got%20undefined at Error (native) at http://oditek.in/medilink_global/js/angularjs.js:6:41
UI-ROUTER
设置控制器时,我遇到以下错误
Error: [ng:areq] http://errors.angularjs.org/1.4.6/ng/areq?p0=productDataController&p1=not%20aNaNunction%2C%20got%20undefined
at Error (native)
at http://oditek.in/medilink_global/js/angularjs.js:6:416
at qb (http://oditek.in/medilink_global/js/angularjs.js:22:131)
at Sa (http://oditek.in/medilink_global/js/angularjs.js:22:218)
at http://oditek.in/medilink_global/js/angularjs.js:80:81
at q (http://oditek.in/medilink_global/js/angularuirouter.js:7:14338)
at http://oditek.in/medilink_global/js/angularuirouter.js:7:14796
at $ (http://oditek.in/medilink_global/js/angularjs.js:73:89)
at K (http://oditek.in/medilink_global/js/angularjs.js:62:39)
at h (http://oditek.in/medilink_global/js/angularjs.js:54:410)
我在下面解释我的代码
route.js:
var Admin=angular.module('medilink',['ui.router']);
Admin.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/product');
$stateProvider
.state('product', {
url: '/product',
templateUrl: 'productview/product.html',
controller: 'productController'
})
.state('product.catagory',{
url:'/catagory',
templateUrl:'productview/catagory.html',
controller:'catagoryController'
})
.state('product.productinfo',{
url:'/info',
templateUrl:'productview/productinfo.html',
controller:'productInfoController'
})
.state('product.productdata',{
url:'/data',
templateUrl:'productview/productdata.html',
controller:'productDataController'
})
});
productDataController.js:
在这里,当我将控制器名称包含在此控制器页面中时,它会引发此类错误。请帮助我解决此错误。正如错误所述,我猜您没有将productDataController.js文件包含到主HTML文件中
<script src="/js/productDataController.js"></script>
嗯,当您调用
angular.module()
时,您将创建新的模块。在官方文档中说,该函数也用于检索模块,但是,好吧,最好在主全局模块定义中注册控制器
在您的情况下,angular.module()
不会返回模块。我可以假设angular试图创建一个新模块
因此,您的主要模块文件应该是:
var Admin=angular.module('medilink',['ui.router']);
Admin.config(函数($stateProvider,$urlRouterProvider){
$urlRouterProvider。否则('/product');
$stateProvider
.state('产品',{
url:“/产品”,
templateUrl:'productview/product.html',
控制器:“productController”
})
.state('产品分类'{
url:“/catagory”,
templateUrl:'productview/catagory.html',
控制器:'catagoryController'
})
.state('product.productinfo'{
url:“/info”,
templateUrl:'productview/productinfo.html',
控制器:'productInfoController'
})
.state('product.productdata'{
url:“/data”,
templateUrl:'productview/productdata.html',
控制器:'productDataController'
})
});
Admin.controller('productDataController',函数($state、$http、$window、$scope){
$scope.buttonName=“添加”;
});
info.directive('customOnChange',function(){
返回{
限制:“A”,
链接:函数(范围、元素、属性){
var onChangeHandler=scope.$eval(attrs.customOnChange);
元素绑定('change',onChangeHandler);
}
};
});
此外,将所有定义拆分为单独的文件,并且只使用构造函数的名称也是一种很好的做法
module.js:
var module=angular.module(“module_name”,“dependencies”);
控制器模块(“控制器名称”,控制器构造器);
module.config(configConstructor)
controller.js:
var controllerConstructor=函数($scope){
//您的控制器代码在这里
};
controllerConstructor.$inject=[“$scope”]
config.js:
var configConstructor=函数($scope){
//您的配置代码在这里
};
configConstructor.$inject=[“$scope”];
您是否已将productDataController.js添加到index.html文件中。您可能忘记将productDataController.js添加到index.html文件中。这是真的,也是我的错误。
<script src="/js/productDataController.js"></script>