1 вариант:myApp.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/detail');
$stateProvider
.state('root', {
url: '',
resolve: {
promiseDatas: function ($state, $http) {
return $http.get("params.json");
}
},
controller: function ($state, promiseDatas) {
var vm = this;
vm.datas = promiseDatas.data;
$state.current.data.datas = promiseDatas.data;
},
controllerAs: 'root'
data: {
datas: {}
}
})
.state('detail', {
parent: 'root',
url: '/detail/:id',
templateUrl: 'pages/detail.html',
resolve: {
promiseData: function ($state, $stateParams) {
return _.findWhere($state.current.data.datas, { id: $stateParams.id })
}
},
controller: function (promiseData) {
var vm = this;
vm.data = promiseData;
},
controllerAs: 'detail'
})
})
2 вариант: Использовать $state.go и передавать { item } напрямую потомку (не придется трогать всю коллекцию и фильтровать ее на наличие интересующего объекта).
3 вариант: Использовать родительский $scope, но от скоупа лучше воздержаться.