我需要使用的函数非常少,如下所示:
data-ng-disabled="_isEmpty(grid.view) || view != 'preview'"
我做的是:
$scope._isEmpty = _.isEmpty;
这样_isEmpty实际上就是lodash函数。
这是否合理?如果是这样,那么对我来说哪里会是一个好地方 编码上面的代码?我应该在我的appController中编码吗?我也应该附上 ._isEmpty到$ scope或$ rootscope?我听说有人在谈论提供服务,然后注入这个。但是对于几行代码来说,这似乎有些过分。
答案 0 :(得分:17)
这完全取决于此代码的位置。如果它严重依赖于特定数据对象或视图,或者需要它,那么它很可能属于控制器。如果在控制器内,$scope
应该被您想要在视图中引用的任何值使用。
但是,如果您正在编写整个应用程序中使用的泛型函数,那么它们应该放在类似服务的东西中,并在需要时注入。大多数情况下,如果您发现自己使用$rootScope
,则代码可能应该在服务中。服务并不是真的矫枉过正,如下所示:
angular.module('myapp.services.something', [])
.factory('myService', [function () {
return {
myFunc: function (someArg) {
console.log(someArg);
}
};
}]);
您可以在这样的服务中放置任意数量的通用辅助函数,并将它们注入需要使用它们的任何控制器中。
答案 1 :(得分:-1)
虽然一般不推荐,但我可以看到将这些功能放入rootcope中解决了这个问题。然后将行$scope._isEmpty = _.isEmpty;
放在每个控制器中就不再需要了。对我来说更好的方法是将效用函数重新编码为指令,即使涉及一些编码。解决问题的另一种方法是使用服务。