角度给出喷油器错误但仍然返回变量

时间:2015-12-17 21:15:56

标签: angularjs

所以我确定这是一个简单的问题我只是忽略,因为我有类似的功能在其他控制器中工作。但由于某种原因,我收到了这个错误。

Error: [$injector:unpr] Unknown provider: tourinfoProvider <- tourinfo <- PhotoplanCtrl
http://errors.angularjs.org/1.4.8/$injector/unpr?p0=tourinfoProvider[object Object]3C-%tourinfo%%3C-%PhotoplanCtrl

但最糟糕的是它打印出tourinfo的数据!它实际上工作,所以虽然它说它不知道tourinfo是什么,它给我数据。这是我的控制器代码。

var app= angular.module('planoxApp')

  app.controller('PhotoplanCtrl',['$http','$scope','$stateParams','$filter','$uibModal','$log',
  'RecieverService','tourinfo',function($http,$scope, $stateParams,$filter,$uibModal,$log,RecieverService,tourinfo){

      var tour = tourinfo
      console.log(tour)
显然更多但是我把它砍掉了,因为它与问题无关。继承了该路线的决心,它应该从中获取tourinfo。

.state('home.photoplans', {  //the main photoplan pages, with photoplan nav bar
  url: '/photoplans/{id}',
  templateUrl: 'photoplan/photoplanmain.html',
  authenticate: true,
  controller: 'PhotoplanCtrl',
  resolve:{
  tourinfo:function(RecieverService,$stateParams){
    return RecieverService.tourinfo($stateParams.id);
  }
}

这显然有效,否则我们永远不会到达控制器或页面。那么有人看到任何明显的问题吗?我真的很困惑,我做了20次,这是唯一一个给我带来问题的人。我不知道我做错了什么。如果需要,我会发布其他代码。

这是一个不起作用的傻瓜,虽然我不确定它是不是因为我的代码或我以前从未使用过plunkr的事实。只是警告我必须更改我的一些代码,否则我会添加10个以上的文件以便让所有内容运行。

http://plnkr.co/edit/2FPlB45XYfvZw7obWD4e?p=preview

2 个答案:

答案 0 :(得分:1)

常见的错误是两次声明控制器。

即。您在路径定义中定义了控制器 PhotoplanCtrl

.state('home.photoplans', {  //the main photoplan pages, with photoplan nav bar
  url: '/photoplans/{id}',
  templateUrl: 'photoplan/photoplanmain.html',
  authenticate: true,
  controller: 'PhotoplanCtrl',
  resolve:{
  tourinfo:function(RecieverService,$stateParams){
    return RecieverService.tourinfo($stateParams.id);
  }
}

但你是否也在你的模板(或其他地方)宣布了它??

<div ng-controller="PhotoplanCtrl"></div>

更新:重复的控制器声明是问题。

如果这不是问题,另一件事就是确认在路由解析中调用RecieverService.tourinfo不是错误。

尝试在那时坚持断点。

resolve:{
  tourinfo:function(RecieverService,$stateParams){
    return RecieverService.tourinfo($stateParams.id);
  }

最后,一个小问题,但你缺少一些分号:

 var tour = tourinfo
 console.log(tour)

答案 1 :(得分:0)

您忘记在括号中包含括号

var app = angular.module('planoxApp', []);