Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 角度指令控制器:参数不是函数,未定义_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 角度指令控制器:参数不是函数,未定义

Javascript 角度指令控制器:参数不是函数,未定义,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我已经在我的控制器中创建了一个指令,我想在该指令中包含另一个控制器。我返回的错误是error:[ng:areq]参数'js/controllers/testview/DocumentController.js'不是函数,未定义 TestviewController app.controller('TestviewController', ['$http', '$scope', '$sessionStorage', '$state', '$log', 'Session', 'api', funct

我已经在我的控制器中创建了一个指令,我想在该指令中包含另一个控制器。我返回的错误是
error:[ng:areq]参数'js/controllers/testview/DocumentController.js'不是函数,未定义

TestviewController

app.controller('TestviewController', ['$http', '$scope', '$sessionStorage', '$state', '$log', 'Session', 'api', function ($http, $scope, $sessionStorage, $state, $log, Session, api) {
    var module_id = $state.params.id;

    $http.get(api.getUrl('componentsByModule', module_id))
        .success(function (response) {
            $scope.components = response;
        });
}]);

app.directive('viewDoc', function () {
    return {
        templateUrl: "tpl/directives/testview/document.html",
        controller: "js/controllers/testview/DocumentController.js",
        resolve: { components: function() { return $scope.components }}
    };
});
app.controller('DocumentController', ['$http', '$scope', '$sessionStorage', '$state', '$log', 'Session', 'api', 'components', function ($http, $scope, $sessionStorage, $state, $log, Session, api, components) {
    $scope.components = components;
}]);
DocumentController

app.controller('TestviewController', ['$http', '$scope', '$sessionStorage', '$state', '$log', 'Session', 'api', function ($http, $scope, $sessionStorage, $state, $log, Session, api) {
    var module_id = $state.params.id;

    $http.get(api.getUrl('componentsByModule', module_id))
        .success(function (response) {
            $scope.components = response;
        });
}]);

app.directive('viewDoc', function () {
    return {
        templateUrl: "tpl/directives/testview/document.html",
        controller: "js/controllers/testview/DocumentController.js",
        resolve: { components: function() { return $scope.components }}
    };
});
app.controller('DocumentController', ['$http', '$scope', '$sessionStorage', '$state', '$log', 'Session', 'api', 'components', function ($http, $scope, $sessionStorage, $state, $log, Session, api, components) {
    $scope.components = components;
}]);

我对directices非常陌生,但是有人知道我做错了什么吗?

在directive定义对象中,
控制器
属性需要一个带有函数名或函数本身(而不是脚本文件路径)的字符串


在指令定义对象内部,
控制器
属性需要一个带有函数名或函数本身(而不是脚本文件路径)的字符串


要按名称而不是文件名调用控制器:

controller: "js/controllers/testview/DocumentController.js"
应该是

controller: "DocumentController"

要按名称而不是文件名调用控制器:

controller: "js/controllers/testview/DocumentController.js"
应该是

controller: "DocumentController"

您确定需要指令控制器吗?我认为你想要实现的是链接功能

您可以使用控制器等指令链接函数

.directive('myDialog', function() {
  return {
   restrict: 'E',
transclude: true,
scope: {},
templateUrl: 'my-dialog.html',
link: function (scope, element) {
  scope.name = 'Jeff';
}
  };
});
看一看有角度的文档
您确定需要指令控制器吗?我认为你想要实现的是链接功能

您可以使用控制器等指令链接函数

.directive('myDialog', function() {
  return {
   restrict: 'E',
transclude: true,
scope: {},
templateUrl: 'my-dialog.html',
link: function (scope, element) {
  scope.name = 'Jeff';
}
  };
});
看一看有角度的文档

在指令定义中没有按其URL放置控制器的选项。但是,如果在DOM模板中定义控制器,则可以在指令定义中使用
controller:'myController as myCtrl'

在指令定义中没有按其URL放置控制器的选项。但是,如果您在DOM模板中定义控制器,您可以在指令定义中使用
controller:'myController as myCtrl'

在这种情况下,控制器不是js文件,它实际上是应用程序范围内的控制器名,即
控制器:“TestviewController”
在这种情况下,控制器不是js文件,它实际上是应用程序范围内的控制器名称,即
控制器:“TestviewController”