繁体   English   中英

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

[英]Angular Passing data to state from controller

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

下面是我的编码。

控制者

$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与第二个控制器一起使用。 我只是想找出这是否可以在同一控制器中实现。

您可以在路由中发送参数:

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

请参阅此文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM