Javascript AngularJS:使用控制器解析时正确的可缩小语法

Javascript AngularJS:使用控制器解析时正确的可缩小语法,javascript,angularjs,minify,Javascript,Angularjs,Minify,在呈现新视图之前,我将使用两个控制器的“解析”功能来获取一些数据,如下所示: HomeCtrl.resolve = { pictures: function(Picture) { return Picture.getall(); } }; 如何编写此代码,以使作为参数传递的图片服务在缩小时不会被覆盖?您可以使用以下模式插入依赖项,这是缩小证明 HomeCtrl.resolve = { pictures : ['Picture', function(Pi

在呈现新视图之前,我将使用两个控制器的“解析”功能来获取一些数据,如下所示:

HomeCtrl.resolve = {
    pictures: function(Picture) {
        return Picture.getall();
    } 
};

如何编写此代码,以使作为参数传递的图片服务在缩小时不会被覆盖?

您可以使用以下模式插入依赖项,这是缩小证明

HomeCtrl.resolve = {
    pictures : ['Picture', function(Picture) {
                return Picture.getall();
            }]
};

使解析函数小型化安全的另一种方法:

HomeCtrl.resolve = {
    pictures: getPictures
};

getPictures.$inject = ['Picture'];
function getPictures(Picture){
    return Picture.getall();
}
这种技术利用了javascript中函数也是对象的事实,因此可以具有属性


有关更多信息,请转到并搜索“$inject”。

angular使用DI的任何地方,您都可以使用此语法。遗憾的是,它不适合我。HomeCtrl.resolve={pictures:['$q',函数(a){}]};将报告未知提供者:aProvider@wukong如果您需要注入
$q
服务,您应该这样做
HomeCtrl.resolve={pictures:['$q',function($q){}]}
,如果您需要注入
$q
服务和
a
服务,您应该这样做
HomeCtrl.resolve={pictures:['$q','a',function($q,a){}
@acrmui sry,这是我的错。解决方案有效。我的代码类似于
HomeCtrl.resolve=['$q',function($q){}]
。我希望angular足够聪明来处理这种情况,因为我只有一个依赖项需要解决。事实证明,由于
resolve
是数组,也是一个对象。angular会将其视为常规对象!很难发现问题,因为代码在不缩小的情况下工作。从angular的角度来看,对象s
{“0”:“$q”,“1”:函数($q){}}
。我们需要用
{something:[“$q”,函数($q){}]}}
来包装函数。为什么图坦卡门不这么说?!我完全忘记了DI问题!