2016-09-02 68 views
0

我有我的控制器此功能:控制器---廠:傳遞參數

$scope.goToPath = function (path, pid) { 

    $scope.pid = pid; 
    console.log("scope pid : " + $scope.pid); 
    $scope.edit = true; 
    $state.go(path); 
}; 

那麼我調用這個函數來得到我廠承諾:

$scope.getProjectById = function() { 
    projectFactory.getProject($scope.pid) 
     .success(function (data) { 
      if(data == null){ 
       $scope.errorMessage = "Le projet avec l'id : " + pid + " n'existe pas"; 
      }else { 

       $scope.project = data; 
      } 

     }) 
     .error(function (data, status, headers, config) { 
      $scope.errorMessage = "Erreur : " + data.error + ' ' + status; 
     }) 
}; 

和我工廠看起來是這樣的:

factory.getProject = function (projectId) { 
     console.log('Project Id factory : '+projectId); 
     return $http.get('http://localhost:8080/gestionprojet/Project/' + projectId) 
    }; 

    return factory; 

但這裏的變量projectId是空的,現在我已經檢查了你所看到的console.log()和我的控制器中的PID有一個值,但在出廠時它等於null

在我看來,我稱它想:

ng-init="getProjectById()" 

任何幫助,將不勝感激。謝謝

+0

你怎麼調用'$ scope.goToPath'? –

+0

'ng-click =「goToPath('addProject',p.id)」' –

+0

因此,在從'goToPath'重定向後,您正在調用'getProjectById'? –

回答

1

在這種情況下,你當前的作用域被破壞,新的作用域正在被創建。因此,分配給作用域的pid也被破壞了。

你可以像這樣做。

在功能$scope.goToPath,它使用$stateParams通過注射它

$scope.goToPath = function(path, pid){ 
    .... 
    $state.go(path,{project_id:pid }) 

} 

而且在你看來是越來越落在目標控制器,

訪問。

您可以參考這裏angular-ui路由

+0

而且你需要添加'params:{projectId:null }在你的州定義 –

+0

是。不要忘記upvote:D –

+0

是的,謝謝^^ –