AngularJS 注入回退
AngularJS Inject Fallback
我遇到过这样一种情况,有时我会将本地变量传递到控制器中,有时不会。
我希望能够做的是,如果"局部变量"不可用,则不要抛出异常,而只是调用控制器并保留局部变量 == null。
.controller('SomeCtrl', ['$scope', 'locals', function ($scope, locals) {
if (!locals) // do something
else // do something else
};
在一种情况下,控制器是使用 $controller 服务创建的。 $controller('SomeCtrl', { locals: 'some locals');
但在其他情况下,我无法控制控制器的实例化方式,并且本地变量不可用。 我希望 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)
事实证明,您可以将"locals"设置为undefined,如果它们可用,它将使用正确的locals。
angular.module('module').value('locals', undefined)
您可以使用
$injector服务注入依赖项。
.controller('SomeCtrl', ['$scope', '$injector', function ($scope, $injector) {
try {
service = $injector.get('locals');
} catch {}
if (!service) // do something
else // do something else
};
相关文章:
- 什么是HTML5画布标记的回退
- 如何在XHTML中添加jQuery CDN回退
- 当CDN加载失败时,为字体添加一个本地CSS回退
- HTML5 视频的回退图像
- 同时使用回退和 JavaScript.什么是正确的方法
- Javascript “替换”替换回退
- jQuery CDN超时回退
- 悬停状态指针事件:无Javascript回退
- IE8 内联尝试的 SVG 回退
- 设置计时器以等待为flash回退视频播放器加载swfobject脚本
- 如何为未加载、加载时间过长和被阻止的css文件编写回退
- HTML5视频回退/备份图像不合适..
- IE8 和控制台.log - 如果开发人员控制台未打开,则回退到存根
- 咕噜咕噜浏览器化 - 设置包含,回退路径
- Javascript动画回退
- 显示不受支持的文件格式的<视频>回退消息
- AngularJS 注入回退
- 检测并附加jQuery,如果没有加载纯Javascript和回退
- 当 CSS 来自云或 CDN 时,如何设置 CSS 的回退 URL
- 版式中的占位符文本回退事件问题