ale*_*dru 15 javascript angularjs angular-ui
我刚开始学习angularjs,我正在使用angular-ui-router.我试图将数据从一个州发送到另一个州,$state.go
但我没有成功.这是我到目前为止:
我没有故意包含html,因为我认为如果需要它不需要请告诉我,我会添加它.
我已将状态配置如下:
$stateProvider
.state('public', {
abstract: true,
templateUrl: 'App/scripts/main/views/PublicContentParent.html'
})
.state('public.login', {
url: '/login',
templateUrl: 'App/scripts/login/views/login.html',
controller: 'loginCtrl'
})
$stateProvider
.state('private', {
abstract: true,
templateUrl: 'App/scripts/main/views/PrivateContentParent.html'
})
.state('private.visits', {
url: '/visits',
views: {
'main': {
controller: 'visitsListCtrl',
templateUrl: 'App/scripts/visits/views/VisitsList.html'
}
}
});
Run Code Online (Sandbox Code Playgroud)
当我LoginController
被调用时,它将执行以下代码:
loginModule.controller('loginCtrl', ['$state', function ($scope, $state) {
$state.go('private.visits', { name : "Object"});
}]);
Run Code Online (Sandbox Code Playgroud)
当private.visits
页面处于活动状态,我试图打印$stateParams
:
visitsModule.controller('visitsListCtrl', ['$stateParams',
function ($stateParams) {
console.log($stateParams);
}]);
Run Code Online (Sandbox Code Playgroud)
事物状态$ stateParams是一个空对象.我希望它包含我在loginCtrl中传递的对象.
编辑
看来如果private.visits
url有这个url格式'/visits/:name'
,我还添加了属性params:["name"]我可以访问我从public.login
状态发送的对象.副作用是将参数添加到逻辑的URL.
我尝试用没有url的子状态做同样的事情,在这种情况下,似乎我无法访问我传递的params public.login
.
如何在子状态中发送数据?
小智 27
你要做的是name
在private.visits
状态中定义param,如:
$stateProvider
.state('public', {
abstract: true,
templateUrl: 'App/scripts/main/views/PublicContentParent.html'
})
.state('public.login', {
url: '/login',
templateUrl: 'App/scripts/login/views/login.html',
controller: 'loginCtrl'
})
$stateProvider
.state('private', {
abstract: true,
templateUrl: 'App/scripts/main/views/PrivateContentParent.html'
})
.state('private.visits', {
// NOTE!
// Previously, we were only passing params as an array
// now we are sending it as an object. If you
// send this as an array it will throw an error
// stating id.match is not a function, so we updated
// this code. For further explanation please visit this
// url http://stackoverflow.com/a/26204095/1132354
params: {'name': null},
url: '/visits',
views: {
'main': {
controller: 'visitsListCtrl',
templateUrl: 'App/scripts/visits/views/VisitsList.html',
resolve: {
name: ['$stateParams', function($stateParams) {
return $stateParams.name;
}]
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后在控制器中访问该名称:
visitsModule.controller('visitsListCtrl', ['name',
function (name) {
console.log(name);
}]);
Run Code Online (Sandbox Code Playgroud)
希望对你有所帮助!
归档时间: |
|
查看次数: |
25757 次 |
最近记录: |