Javascript 在指令中编译控制器时未定义AngularJS$范围
我正在使用ant构建/丑化我的AngularJS,每次我在指令中有一个控制器时,我都会得到一个未定义的$scope错误。代码示例如下: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 = {};
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确实支持注入和括号表示法。