控制器——工厂:传递参数

Controller --- Factory: passing parameters

本文关键字:参数 工厂 控制器      更新时间:2023-09-26

我的控制器中有这个函数:

    $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是这样的:

 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()"

任何帮助都会很感激。谢谢你

在这种情况下,当前作用域被销毁,新的作用域被创建。因此,分配给作用域的pid也被销毁了。

你可以这样做。

函数$scope.goToPath中,

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

在视图着陆的目标控制器中,

通过注入$stateParams来访问。

你可以在这里引用angular-ui routing