1. 基於ui-router的頁面跳轉傳參
(1) 在AngularJS的app.js中用ui-router定義路由,比如現在有兩個頁面,一個頁面(producers.html)放置了多個producers,點擊其中一個目標,頁面跳轉到對應的producer頁,同時將producerId這個參數傳過去。
.state('producers', { url: '/producers', templateUrl: 'views/producers.html', controller: 'ProducersCtrl' }) .state('producer', { url: '/producer/:producerId', //方法一;通過路由 傳參 直接把參數掛載在url上
url: '/producer' //方法二: 通過 params
templateUrl: 'views/producer.html',
params:{producerId:""}, //方法二:路由設置參數 controller: 'ProducerCtrl' })
(2) 在producers.html中,定義點擊事件,比如ng-click="toProducer(producerId)",在ProducersCtrl中,定義頁面跳轉函數 (使用ui-router的$state.go接口):
.controller('ProducersCtrl', function ($scope, $state) { $scope.toProducer = function (producerId) { //方法二: $state.go("url",{}) 傳遞參數 $state.go('producer', {producerId: producerId}); 通過 go接口進行傳參時,要注意 在接受參數的路由下要配置 params:{producerId:""} 鍵名是相同的 否則接受不到參數 }; });
(3) 在ProducerCtrl中,通過ui-router的$stateParams獲取參數producerId,譬如:
.controller('ProducerCtrl', function ($scope, $state, $stateParams) { var producerId = $stateParams.producerId; // 獲得參數 $stateParams.key 方法二
});