2015-10-19 62 views
1

我想通過角度ui路由器的解析屬性從工廠傳遞數據。我在TasksController控制器中添加了名爲「alltasks」的解析鍵。 ?但顯示像http://errors.angularjs.org/1.4.7/ $噴油器的錯誤/ unpr P0 = alltasksProvider爲什麼解決不能在角度ui路由器中工作?

$stateProvider.state('task', 
    { 
    url:'/task',   
    views:{ 
     "sidebar":{ 
      templateUrl:'/partial/task/taskcreateform.html', 
      controller:"TasksController", 
     }, 
     "content":{ 
      templateUrl:'/partial/task/taskgrid.html', 
      controller:"TasksController", 
      resolve:{ 
       alltasks:function(Task){ 
       Task.query(function(data){ 
       return data; 
       }); 
       } 
      } 
     } 
    }   
}); 

我的控制器是:

myApp.controller("TasksController", 
["$scope","$filter","$interval","$timeout","$http","$httpParamSerializerJQLike","Task","toaster","$stateParams","alltasks", 
    function($scope,$filter,$interval,$timeout,$http,$httpParamSerializerJQLike,Task,toaster,$stateParams,alltasks){ 

    $scope.tasks=alltasks; //data from ui-router Resolve property 
    $scope.appname="Test App"; 
    $scope.task={status:'pending'}; 
}]); 

回答

0

這兩種觀點都共享相同的控制器,但只有一個視圖中設置有 解決。所以,讓我們將它的狀態(未命名視圖)級

$stateProvider 
    .state('task', 
    { 
    url:'/task', 
    views:{ 

     "sidebar":{ 
      templateUrl:'/partial/task/taskcreateform.html', 
      controller:"TasksController", 
     }, 
     "content":{ 
      templateUrl:'/partial/task/taskgrid.html', 
      controller:"TasksController", 
      // this resolve would be available just for this view 
      //resolve:{ 
      // alltasks:function(Task){ 
      // Task.query(function(data){ 
      // return data; 
      //  }); 
      // } 
      //} 
     } 
    }, 
    // this resolve should be ready for any controller 
    // of any named view 
    resolve:{ 
     alltasks:function(Task){ 
     Task.query(function(data){ 
     return data; 
     }); 
     } 
    } 
}); 
+0

兄弟@Radim科勒 我已經改變了我的代碼,像你上面提到,錯誤已經解決,但我不能接受任何數據。 $ scope.dummyTasks = {}; $ scope.getTask = function(){ Task.query(function(data){ $ scope.dummyTasks = data; }); }(); 但是,這種方法可以從同一工廠接收數據 –

+0

很高興看到進展...我準備好協助,但現在看來我們有不同的問題。你可以設置一個重新生成錯誤的重擊程序嗎?我會盡力幫助... –

0

在您需要一臺發電機的功能價值下決心部分,所以你可能會返回承諾你(希望;-))在Task.query()中生成並返回。

在你編寫函數的代碼中不會返回任何東西。

resolve: { 
      alltasks: function(Task){ 
      return Task.query(function(data){ 
       return data; 
      }); 
      } 
     }