Javascript AngularJS注入回退
我有这样一种情况,有时我让本地人进入控制器,有时则没有 我希望能够做到的是,如果“局部变量”不可用,则不抛出异常,而只是调用控制器并使局部变量==nullJavascript AngularJS注入回退,javascript,angularjs,Javascript,Angularjs,我有这样一种情况,有时我让本地人进入控制器,有时则没有 我希望能够做到的是,如果“局部变量”不可用,则不抛出异常,而只是调用控制器并使局部变量==null .controller('SomeCtrl', ['$scope', 'locals', function ($scope, locals) { if (!locals) // do something else // do something else }; 在一种情况下,正在使用$controller服务创建控制器$控制器('S
.controller('SomeCtrl', ['$scope', 'locals', function ($scope, locals) {
if (!locals) // do something
else // do something else
};
在一种情况下,正在使用$controller服务创建控制器$控制器('SomeCtrl',{locals:'somelocals')
但在其他情况下,我无法控制如何实例化控制器,并且局部变量不可用。我希望Angular能像普通javascript一样传递未定义的消息
这并不酷:
Error: Unknown provider: localsProvider <- locals
at Error (<anonymous>)
at http://localhost:1573/Scripts/angular.js:2832:15
at Object.getService [as get] (http://localhost:1573/Scripts/angular.js:2960:39)
at http://localhost:1573/Scripts/angular.js:2837:45
at getService (http://localhost:1573/Scripts/angular.js:2960:39)
at invoke (http://localhost:1573/Scripts/angular.js:2978:13)
at Object.instantiate (http://localhost:1573/Scripts/angular.js:3012:23)
at $get (http://localhost:1573/Scripts/angular.js:4981:24)
at http://localhost:1573/Scripts/angular.js:4560:17
at forEach (http://localhost:1573/Scripts/angular.js:137:20)
错误:未知提供程序:localsProvider您可以使用$injector服务注入依赖项
.controller('SomeCtrl', ['$scope', '$injector', function ($scope, $injector) {
try {
service = $injector.get('locals');
} catch {}
if (!service) // do something
else // do something else
};
事实证明,您可以将“局部变量”设置为未定义,并且如果它们可用,它将使用正确的局部变量
angular.module('module').value('locals', undefined)
这是服务定位器反模式。