我的控制器中有这个功能:
$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为null,现在我已经检查了console.log()
,并且我的控制器中的pid有一个值,但在工厂中它等于null
。
在我看来,我称之为:
ng-init="getProjectById()"
任何帮助将不胜感激。谢谢
答案 0 :(得分:1)
在这种情况下,您的当前范围将被破坏,新范围将被创建。因此,分配给范围的
pid
也将被破坏。
你可以这样做。
在函数$scope.goToPath
中,
$scope.goToPath = function(path, pid ){
....
$state.go(path,{project_id:pid })
}
在你的视图落地的目标控制器中,
通过注入来使用$stateParams
访问它。
您可以在此处参考angular-ui路由