代码之家  ›  专栏  ›  技术社区  ›  OddDev

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

  •  0
  • OddDev  · 技术社区  · 9 年前

    我的控制器中有此功能:

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   RIYAJ KHAN    9 年前

    在这种情况下,当前作用域将被破坏,新作用域将创建, pid 分配给范围的也将被销毁。

    你可以这样做。

    In函数 $scope.goToPath ,

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

    使用访问它 $stateParams 通过注射。

    angular-ui 路由

    推荐文章