在AngularJS中放置一些小实用功能的好地方在哪里?

时间:2014-02-02 06:25:49

标签: angularjs

我需要使用的函数非常少,如下所示:

data-ng-disabled="_isEmpty(grid.view) || view != 'preview'"

我做的是:

$scope._isEmpty = _.isEmpty;

这样_isEmpty实际上就是lodash函数。

这是否合理?如果是这样,那么对我来说哪里会是一个好地方 编码上面的代码?我应该在我的appController中编码吗?我也应该附上 ._isEmpty到$ scope或$ rootscope?我听说有人在谈论提供服务,然后注入这个。但是对于几行代码来说,这似乎有些过分。

2 个答案:

答案 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;放在每个控制器中就不再需要了。对我来说更好的方法是将效用函数重新编码为指令,即使涉及一些编码。解决问题的另一种方法是使用服务。