Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Angular.js添加控制器时出错_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 使用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

使用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: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>