Angular将数据从控制器传递到状态

时间:2017-07-24 09:33:49

标签: javascript angularjs

我试图通过路由将一些数据从控制器传递到视图文件。不确定我是否正确地传达了信息。

以下是我的编码。

控制器

$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和第二个控制器。我只是想知道这是否可以在同一个控制器中实现。

1 个答案:

答案 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
    }
})

请参阅this documentation