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

时间:2016-09-02 17:17:59

标签: javascript angularjs controller angular-ui-router

我的控制器中有这个功能:

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

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

  

在这种情况下,您的当前范围将被破坏,新范围将被创建。因此,分配给范围的pid也将被破坏。

你可以这样做。

在函数$scope.goToPath中,

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

}

在你的视图落地的目标控制器中,

通过注入来使用$stateParams访问它。

您可以在此处参考angular-ui路由