在 Angularjs 中 ui-sref 和 $state.go 如何传递参数

来源:互联网 发布:汉诺塔递归算法机制 编辑:程序博客网 时间:2024/06/17 00:47

1. ui-sref / $state.go 的区别

ui-sref 一般使用在 <a>...</a> 标签上;

<a ui-sref="message-list">消息中心</a>

$state.go('someState')一般使用在 controller 里面;

.controller('firstCtrl', function($scope, $state) {      $state.go('login'); });

这两个本质上是一样的东西,我们看ui-sref的源码:

element.bind("click", function(e) {    var button = e.which || e.button;    if ( !(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || element.attr('target')) ) {    var transition = $timeout(function() {        // HERE we call $state.go inside of ui-sref        $state.go(ref.state, params, options);    });

ui-sref最后调用的还是 $state.go() 方法

2. 如何传递参数

首先,要在目标页面定义接受的参数:

.state("message-list",{    templateUrl:"templates/message-list.html",    controller:"MessageCtrl"}).state("message-detail",{    params:{"messageId":null},    templateUrl:"tmmplates/message-detail.html",    controller:"MessageDetailCtrl"})

然后,传递参数,

ui-sref:

<ion-content style="background-color:#F0F0F0;">    <div class="list">        <a class="item item-thumbnail-left" ng-repeat="itme in items" ui-sref="message-detail({{messageId:item.messageID}})"></a>        <img src="img/msg.jpg">        <h2 ng-bind="item.messageTitle"></h2>        <p ng-bind="item.messageContent"></p>        <p ng-bind="item.lastModifyTime"></p>    </div></ion-content>

$state.go:

.controller("firstCtrl",function($scope,$state){    $state.go("login",{test:333});});

最后,接收参数

在目标页面的controller里注入 $stateParams ,然后 “$stateParams.参数名” 获取

.controller("MessageDetailCtrl",function($scope,$http,$stateParams,$ionicLoading){    //console.log($stateParams.messageId);});
阅读全文
0 0
原创粉丝点击