//<div ui-view="view1"></div> function sampleUiRouter() { $stateProvider.state("sample", { url: "/contacts/:category/{id:int}?myParam1&myParam2", reloadOnSearch: false, //配合 $location.search("page", value) 好用 params: {}, //用來作default params 很不錯 title: "", //本身的擴展 (在$stateChange時替換document.title) getTitle: function (stateParams) { //title 的動態版本 return "分類: " + stateParams.categoryName; }, data: { customData1: 44 }, views: { 'view1': { resolve: { data: ["$http", "stateParams", function ($http, stateParams) { return $http({ url: "", method: "get" }); }] }, controllerAs: "xxScope", controller: ["$scope", "data", "$state", "$stateParams", function ($scope, data, $state, $stateParams) { log($state.current.data.customData1) }], controllerProvider: ["$stateParams", function ($stateParams) { var ctrlName = $stateParams.type + "Controller"; return ctrlName; }], templateProvider: ["$stateParams", function ($timeout, $stateParams) { return $timeout(function () { return '<h1>' + $stateParams.contactId + '</h1>' }, 100); }], templateUrl: function (stateParams) { } } }, }); }
參考 : https://github.com/angular-ui/ui-router/wikigit
更新 : 2015-10-18angularjs
在 $stateChangeStart 時若是要作 redirect ,要先 event.preventDefault(); $state.go(x); 若是沒有preventDefault 它會先去了a 再去 b.github
$state 也是監聽 $locationChange 的 ide
更新 : 2015-10-23ui
經常使用的東東 : url
1. 按 <a> 添加或移除 url params spa
添加 <a ui-sref="{ page: 2 }">add page</a> code
移除 <a ui-sref="{ page: undefined }">remove page</a> 或者 <a ui-sref="{ page: '' }">remove page</a>router
2. 動態state and params blog
refer : http://stackoverflow.com/questions/24349731/dynamically-set-the-value-of-ui-sref-angularjs
萬能 way : <a ng-href="{{ $state.href( stateName, stateParams ) }}" >add page</a>
動態 params only : <a ui-href="{{ $state.href( stateName, stateParams ) }}" >add page</a>