【发布时间】:2015-10-07 19:30:25
【问题描述】:
我正在尝试将 Angular 的 $timeout 服务注入一个应该在我的应用程序的多个控制器中调用的方法中。但是,我总是收到错误消息:
错误:[$injector:unpr] 未知提供者:$timeoutProvider $timeout
当然必须知道$timeout,因为它是一个角度服务,所以我不明白为什么会发生这个错误。
这是我的代码:
HTML:
<div ng-app="app" ng-controller="sampleController">
<button ng-click="doit()">Do It!</button>
</div>
JAVASCRIPT:
var app = angular.module('app', []);
app.controller('sampleController', ['$scope', function($scope) {
var _this = this;
$scope.doit = function() {
var $injector = angular.injector();
var $timeout = $injector.get('$timeout', _this);
$timeout(function () { alert('ok'); });
};
}]);
这是一个演示问题的 jsfiddle:
https://jsfiddle.net/fvw8zss5/
- 这不是关于这是否是一种不好的做法的问题。当然是坏的。这是一个关于为什么它不起作用的问题。
- 如果您知道如何使用 JsFiddle,JsFiddle 就可以使用。
【问题讨论】:
-
我什至无法演奏小提琴。它说'模块“应用程序”不能被实例化'或一些。
-
你为什么用喷油器?除非在非常特殊的情况下,否则它真的不受欢迎。
-
@sg.cc 您需要更改加载角度的方式。在左上角的框架和扩展中从 onLoad 更改为“no wrap -
” -
@sg.cc Julien Roy 说的。我尝试保存为“no wrap -
”,但它总是返回“On Load”。 -
@mxa055 原因是该方法会在应用程序的多个控制器中使用。我不想为大约 25 个控制器添加相同的功能。而且我也不想为每个控制器添加 '$timeout' 依赖项。
标签: javascript angularjs