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

5 angularjs

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

data-ng-disabled="_isEmpty(grid.view) || view != 'preview'"
Run Code Online (Sandbox Code Playgroud)

我做的是:

$scope._isEmpty = _.isEmpty;
Run Code Online (Sandbox Code Playgroud)

所以_isEmpty实际上是lodash函数.

这是合理的事吗?如果是这样,那么我将在哪里编写上述代码?我应该在我的appController中编码吗?我还应该将._isEmpty附加到$ scope或$ rootscope吗?我听说有人在谈论提供服务,然后注入这个.但是对于几行代码来说,这似乎有些过分.

Mat*_*Way 17

这一切都取决于需要此代码的位置.如果它严重依赖于特定数据对象或视图,或者需要它,那么它很可能属于控制器.如果在控制器内部,$scope则应使用要在视图中引用的任何值.

但是,如果您正在编写在整个应用程序中使用的泛型函数,那么它们应该放在类似服务的东西中,并在需要时注入.大多数情况下,如果您发现自己使用$rootScope,代码应该在服务中.服务并不是真的过度,你可以在下面看到:

angular.module('myapp.services.something', [])
    .factory('myService', [function () {
        return {
            myFunc: function (someArg) {
                console.log(someArg);
            }
        };
     }]);
Run Code Online (Sandbox Code Playgroud)

您可以在这样的服务中放置任意数量的通用辅助函数,并将它们注入需要使用它们的任何控制器中.


zsz*_*zep -1

尽管通常不推荐,但我可以看到通过将函数放入根作用域可以解决此类问题。$scope._isEmpty = _.isEmpty;这样就不再需要将线路放入每个控制器中了。对我来说更好的方法是将实用函数重新编码为指令,即使涉及一些编码。解决问题的另一种方法是使用服务。