gpt4 book ai didi

javascript - AngularJS - 配置服务和 $routeProvider

转载 作者:行者123 更新时间:2023-11-28 02:37:30 25 4
gpt4 key购买 nike

这是一个相当愚蠢的问题,但我无法弄清楚。我有一些简单的模块,配置如下:

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 未在您的 SpecificCtrl $scope 中定义,它被注入(inject),因此您只需编写 foo 即可使用它如上所述。

此外,如果您要缩小代码,请考虑注入(inject)数组语法。

这是plunker

关于javascript - AngularJS - 配置服务和 $routeProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13239610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com