这是一个很愚蠢的问题,但我无法弄清楚。我有一些简单的模块,像这样配置:
var synergy_module = angular.module('synergy', [])
.config(function($provide, $routeProvider) {
$routeProvider.when('/s/:id', {templateUrl: 'partials/...', controller: SpecPoolCtrl});
$routeProvider.when('/s', {templateUrl: 'partials/...', controller: SpecPoolCtrl});
$provide.factory('foo', function(){return 1;});
});
现在在 SpecPoolCtrl 中:
function SpecificationCtrl($scope, foo,$http, $location, $routeParams) {
window.console.log($scope.foo());
...
}
当我运行此代码时,我得到
TypeError: Object #<Object> has no method 'foo'
at new SpecificationCtrl (app/js/controllers.js:373:31)
at invoke (app/lib/angular/angular.js:2795:28)
at Object.instantiate (app/lib/angular/angular.js:2805:23)
at $get (app/lib/angular/angular.js:4621:24)
你能帮我怎么了吗?或者一些相关的例子如何使其工作?
你应该像这样使用它
$provide.factory('foo', function(){
return 1;
});
function SpecificationCtrl($scope, foo,$http, $location, $routeParams) {
console.log(foo);
...
}
这是因为foo
没有在 SpecificationCtrl$scope
中定义,它被注入,因此您只需如上所述编写foo
即可使用它。
另外,如果要缩小代码,请考虑注入数组语法。
这是褶皱机