Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 美元状态现象_Javascript_Angularjs - Fatal编程技术网

Javascript 美元状态现象

Javascript 美元状态现象,javascript,angularjs,Javascript,Angularjs,我有一个$stateParams现象,我想取消重启: 我要通过以下州传递此代码: 在我的控制器中: $scope.goToPath = function ( path, pid ) { $scope.pid = pid; console.log("scope pid : " + $scope.pid + " Full path : " + $state.current.name); $state.go(path, {projectId : pid} ); }; 在我

我有一个
$stateParams
现象,我想取消重启:

我要通过以下州传递此代码: 在我的控制器中:

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


    $scope.pid = pid;
    console.log("scope pid : " + $scope.pid + " Full path : " + $state.current.name);
    $state.go(path, {projectId : pid} );
};
在我的州定义中:

state('projects.detail', {
             url: '/detail',
             params : { projectId : null},
             templateUrl: 'app/pages/projects/detail/detailProject.html',
             title: 'Detail du projet',
        });
然后我用
nginit
调用这个函数:

$scope.getProjectById = function () {

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

                $scope.project = data;
                $scope.project.dateDebut =  new Date(data.dateDebut);
                $scope.project.dateFin =  new Date(data.dateFin);
            }
        })
        .error(function (data, status, headers, config) {
            $scope.errorMessage = "Erreur 1: " + data.error + ' ' + status;
        });
};
正如您在这里看到的,我正在传递状态定义中声明的值

在我的工厂,我有:

 factory.getProject = function (projectId) {
    console.log('Project Id factory : '+ projectId + $stateParams.projectId);
    return $http.get('http://localhost:8080/gestionprojet/Project/' + $stateParams.projectId)
};
现在当我运行这个时,我得到了:
projectd=undefined
$stateParams.projectd=4
现在我在函数中传递projectd,所以通常它应该有一个值,不是吗?
如果有人能解释一下,我将不胜感激。感谢我这是一个设计问题:

假设这是应用程序的HTML:

<div ng-app="demoApp" ng-controller="appCtrl">
    <a href ng-click="goToPath('detail', 234)">redirect</a>
    <div ui-view>
    </div>
</div>


使用此代码,您可以获取您的
projectId
,然后将其传递给您的服务。

您在哪里定义了
getProjectById
函数?在我的控制器中,与
goToPath()
相同,实际上这就是我所做的,因为我传递值的两个状态都是父状态的孩子,所以它们有一个这样的共享控制器:
函数routeConfig($stateProvider,$urlRouterProvider){$stateProvider.state('projects'),{url:'/projects',模板:'',摘要:true,标题:'Les projets',控制器:'ProjectController'})
…子项定义。。。
angular.module('demoApp', ['ui.router'])
  .controller('appCtrl', function($scope, $stateParams, $state){
        $scope.goToPath = function ( path, pid ) {
        alert(path + ' ' + pid);
        $scope.pid = pid;
      $state.go(path, {projectId : pid} );
    };
  })
    .config(routes);

function routes($urlRouterProvider, $stateProvider) {

    $urlRouterProvider.otherwise('/');

    $stateProvider
        .state('detail', {
            url: '/detail',
             params : { projectId : null},
             template: '<div ng-init="getProjectById()">ok</div>',
             title: 'Detail du projet',
             controllerAs: 'detail',
             controller: function($scope, $stateParams){
               $scope.getProjectById = function () {
                 alert($stateParams.projectId)
               } 
              }
        });
}