我正在使用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 = {};
}
};
}]);
我的问题是,如何定义控制器的$范围,以便在编译时不会出现未定义的情况?
答案 0 :(得分:1)
您希望将与指令定义相同的minifier / ulgifier安全方法应用于控制器。
所以你的控制器来自:
controller : function($scope) {
为:
controller: ['$scope',function($scope) {
uglifier将$scope
重命名为'e'之类的短片,这对于大小很好但是Angular不知道要注入'e'的内容。
uglifier不会更改字符串。因此,上面的新代码让角度知道它应该将$ scope注入'e'(或uglifier给它的任何名称)。
答案 1 :(得分:0)
this.addPosts = function($scope, newPosts) {
什么叫这个功能?你为什么试图将$ scope传递给它?我认为你应该把它改成:
$scope.addPosts = function(newPosts) {
因为您想要获得第一个$ scope ...而不是您尝试传递给addPosts的任何范围。