Я считаю, что что-то подобное должно работать в вашей службе, если вы должны использовать .value() для объявления некоторых объектов для инъекции
var myLocalValue = myInjectedValue || "Some default value";
Я не очень разбираюсь в javascript, но этот ответ на SO, похоже, ускользает от того факта, что это тоже будет работать: Объяснение назначения переменных JavaScript ИЛИ (||)
Я сделал здесь скрипку, чтобы проверить ее, похоже, она работает так, как я ожидал:
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
});
HTML
<div ng-app="myapp" ng-controller="someController">
<ol>
<li>{{foo}}</li>
<li>{{bar}}</li>
<li>{{baz}}</li>
</ol>
</div>
Обратите внимание, что это работает только в том случае, если myOtherThing не введен, если вы перечислите его для внедрения, но он не был определен, вы столкнетесь с ошибками, но я не уверен, каков именно вариант использования.
person
shaunhusain
schedule
17.07.2013