我试图通过路由将一些数据从控制器传递到视图文件。不确定我是否正确地传达了信息。
以下是我的编码。
控制器
$scope.roleUsers = function(roleId){
$scope.testvar = "Role Id Is" + roleId;
console.log($scope.testvar);
$state.go('roleUsers');
}
路线
.state('roleUsers', {
url: '/roleUsersList',
templateUrl: 'views/modals/roles/roleUsersList.html',
controller: function($scope) {
$scope.testvar = "Sent by route file";
}
})
查看(roleUsersList.html)
<label>asas{{ testvar }}</label>
如何在html显示中显示“角色ID为X”?
最终我要做的是从API中获取一些数据(数组)并在新视图中显示它。这只是我最初实现最终目标的基本方法。
需要显示的数据必须来自控制器(据我所知Angular),因为根据用户的其他一些输入,数据会有所不同。
我想我可以通过服务/工厂传递数据(这是单例,我猜它不适合动态环境?)并使用第二个控制器或者可以使用$ rootScope和第二个控制器。我只是想知道这是否可以在同一个控制器中实现。
答案 0 :(得分:1)
您可以在路线中发送参数:
$state.go('roleUsers', { roleId: someValue });
或者在html中:
<a ui-sref="roleUsers({ roleId: someValue })>..</a>
在你的定义中:
.state('roleUsers', {
url: '/roleUsersList/:roleId',
templateUrl: 'views/modals/roles/roleUsersList.html'
})
你的控制器:
function($scope, $stateParams) {
$scope.testvar = $stateParams.roleId;
}
如果您不希望参数出现在查询字符串中,可以使用params
选项:
.state('roleUsers', {
url: '/roleUsersList',
templateUrl: 'views/modals/roles/roleUsersList.html'
params: {
roleId: null
}
})