Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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 在指令中编译控制器时未定义AngularJS$范围_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 在指令中编译控制器时未定义AngularJS$范围

Javascript 在指令中编译控制器时未定义AngularJS$范围,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在使用ant构建/丑化我的AngularJS,每次我在指令中有一个控制器时,我都会得到一个未定义的$scope错误。代码示例如下: app.directive('directive1',['$compile', '$http',function($compile, $http) { return { restrict: "A", controller : function($scope) { var posts = {};

我正在使用ant构建/丑化我的AngularJS,每次我在指令中有一个控制器时,我都会得到一个未定义的$scope错误。代码示例如下:

app.directive('directive1',['$compile', '$http',function($compile, $http) {
    return {
        restrict: "A",
        controller : function($scope) {
            var posts = {};
            this.addPosts = function($scope, newPosts) {

                angular.extend(posts, newPosts);
                //$scope.$apply(function() {
                    $scope.posts = posts;
                //});
            };
        },
        link: function (scope, element, attrs) {
           scope.posts = {};
        }
    };
}]);

我的问题是,如何定义控制器的$scope,使其在编译时不会显示为未定义?

this.addPosts=函数($scope,newPosts){

调用此函数是什么?为什么要将$scope传递给它?我认为应该将其更改为:

$scope.addPosts=函数(newPosts){


因为您希望获得第一个$scope…而不是您试图传递到addPosts的任何作用域。

this.addPosts=函数($scope,newPosts){

调用此函数是什么?为什么要将$scope传递给它?我认为应该将其更改为:

$scope.addPosts=函数(newPosts){


因为您希望获得第一个$scope…而不是尝试传递到addPosts的任何作用域。

您希望对控制器应用与指令定义相同的minifier/ulgifer-safe方法

因此,您的控制器来自:

controller : function($scope) {
致:

丑八怪正在将
$scope
重命名为像“e”这样的短名称,这对于大小来说是很好的,但Angular不知道将什么注入到“e”中


uglifier不会更改字符串。因此,上面的新代码让angular知道它应该将$scope注入到“e”(或uglifier给它的任何名称)中。

您希望对控制器应用与指令定义相同的minifier/ulgifer安全方法

因此,您的控制器来自:

controller : function($scope) {
致:

丑八怪正在将
$scope
重命名为像“e”这样的短名称,这对于大小来说是很好的,但Angular不知道将什么注入到“e”中


uglifier不会更改字符串。因此,上面的新代码让angular知道它应该将$scope注入“e”(或uglifier给它的任何名称).

不是问题或担忧,问题是$scope在UGLY时不会持续存在。否则它会工作。这可能是您的问题。迷你们会将控制器的第一个参数重写为类似于
函数(A)
的内容,然后addPosts函数将被缩小为
函数(b,c)
…我不知道你为什么要这样编写addPosts函数。你能解释一下为什么它要将$scope传递到addPosts中吗?这很奇怪。这不是问题或担忧,问题是$scope在被丑化后不会继续存在。否则它会起作用。这可能是你的问题。迷你们会将控制器的第一个参数重写为ke
函数(a)
则addPosts函数将缩小为
函数(b,c)
…我不知道你为什么要这样编写addPosts函数。你能解释一下为什么它要将$scope传递给addPosts吗?这太奇怪了。你不应该这样做,指令控制器有一定数量的参数。它们不能像真正的控制器那样自由注入。事实上,我错了。这已经改变了…我以前说的是真的现在angular确实支持注入和括号表示法。你不需要这样做,指令控制器有一组参数。它们不能像真正的控制器那样自由注入。事实上,我错了。这已经改变了…我以前说的是真的,但现在angular确实支持注入和括号表示法。