如何在angularjs中配置服务?

e-s*_*tis 5 angularjs angularjs-service

我得到了角度服务,我需要配置,这样我就可以从我的应用程序中删除耦合并分享我的一些代码.

我的问题是你是如何实现这一目标的?

使用module.value()和依赖注入?那么你如何获得默认值?如何在init处计算值而不是硬编码?

有另一项服务?你怎么做那个通用的?

你有代码例子吗,因为我有点迷失了.

dsp*_*ies 7

要创建可配置服务,您需要使用a provider,请参阅:http://docs.angularjs.org/guide/providers.提供程序允许您在实例化模块的配置块之前配置工厂或服务.有关简单示例,请参阅http://plnkr.co/edit/QMLBBQ3obE90FtCA2eBu

有关如何使用可配置服务的更完整/复杂的示例,我建议查看Restangular项目,该项目还演示了一种提供可由应用程序开发人员覆盖的默认值的方法.


sha*_*ain 1

我相信如果您要使用 .value() 声明一些用于注入的对象,这样的东西应该在您的服务中工作

var myLocalValue = myInjectedValue || "Some default value";
Run Code Online (Sandbox Code Playgroud)

我不是超级精通 javascript,但是这个答案似乎回避了这样一个事实:这也可以工作: JavaScript OR (||) 变量赋值解释

我在这里做了一个小提琴来测试它,它似乎按我的预期工作:

http://jsfiddle.net/u3MY8/1/

JavaScript

var app = angular.module("myapp",[]);
// define a value
app.value('myThing', 'weee');

// use it in a service
app.factory('myService', ['myThing', function(myThing, myOtherThing){
    var myLocalOtherThing = myOtherThing || "some default";
   return {
       whatsMyThing: function() { 
          return myThing; //weee
       },
       whatsMyOtherThing: function() {
           return myOtherThing;
       },
       whatsMyOtherThingWithDefault: function() {
           return myLocalOtherThing;
       }
    }
}]);

// use it in a controller
app.controller('someController', function($scope, myService) {
    $scope.foo = myService.whatsMyThing(); //weee
    $scope.bar = myService.whatsMyOtherThing(); //""
    $scope.baz = myService.whatsMyOtherThingWithDefault(); //some default
});
Run Code Online (Sandbox Code Playgroud)

超文本标记语言

<div ng-app="myapp" ng-controller="someController">
    <ol>
        <li>{{foo}}</li>
        <li>{{bar}}</li>
        <li>{{baz}}</li>
    </ol>
</div>
Run Code Online (Sandbox Code Playgroud)

要注意的是,这只在未注入 myOtherThing 的情况下才有效,如果您列出要注入的它但尚未定义它,您将遇到错误,但我不确定具体的用例是什么。