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)
}
}
});
}