Я работаю над одним проектом по ионным каркасам.
Где застрял список, который не обновляется. После нажатия на элемент меню список должен быть соответствующим образом обновлен.
Поскольку обе вещи находятся в другом контроллере, я не знаю, как я могу сделать scope.apply
Ниже приведен код.
menu.html
<ion-side-menus enable-menu-with-back-views="true">
<ion-side-menu-content>
<ion-nav-bar class="bar-assertive">
<ion-nav-back-button class="button-clear button-icon ion-ios-arrow-back">
</ion-nav-back-button>
<ion-nav-buttons side="left">
<button class="button button-icon button-clear ion-navicon" menu-toggle="left">
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-nav-view name="mainContent"></ion-nav-view>
</ion-side-menu-content>
<ion-side-menu side="left">
<ion-header-bar class="bar-assertive">
<h1 class="title">Services</h1>
</ion-header-bar>
<ion-content>
<div class="list" ng-controller="serviceCtrl as vm">
<a menu-close class="item item-icon-right item-dark" ng-repeat="services in vm.menu" ng-click="vm.setService(services.id)">
{{services.name}}
<i class="icon ion-ios-arrow-right ion-accessory"></i>
</a>
</div>
<!-- </ion-content> -->
</ion-side-menu>
</ion-side-menus>
Услуги меню
angular.module('starter').controller('serviceCtrl', ['$state','serviceFactory','$scope','$rootScope', serviceCtrl]);
function serviceCtrl($state, serviceFactory,$scope,$rootScope) {
var vm = this;
var menu = serviceFactory.getService();
vm.menu = menu;
/* var data = serviceFactory.getService();
vm.menu = data.menu;*/
vm.setService = function(menuId){
//$scope.$apply(function() {
//alert('a');
serviceFactory.setService(menuId);
//$scope.subServiceId = menuId;
$state.go('app.sub');
setTimeout(function(){
alert('asdf')
$scope.$apply()
}, 300);
//});
};
};
LIst страница, которая должна быть обновлена
<ion-view view-title="{{vm.menu[vm.subServiceId-1]['name']}}" ng-controller="subServiceCtrl as vm">
<ion-content>
<div class="list">
<a class="item item-icon-right" ng-repeat="services in lists" ng-click="vm.setSubService(services.sname)">
{{services.sname}}
<i class="icon ion-ios-arrow-right ion-accessory"></i>
</a>
</div>
</ion-content>
</ion-view>
И контроллер списка
angular.module('starter').controller('subServiceCtrl',['$state','serviceFactory','$scope','$rootScope',subServiceCtrl]);
function subServiceCtrl($state,serviceFactory,$scope,$rootScope) {
var vm = this;
//get the sub services
var menu = serviceFactory.getService();
$scope.menua = menu;
var subServiceIda = serviceFactory.actSercice();
vm.subServiceId = serviceFactory.getSelected();
$rootScope.lists = menu[subServiceIda-1].subItems;
alert('as check');
console.log(vm.subServiceId);
alert("First level menu id is "+vm.subServiceId);
vm.menuId = serviceFactory.setFirstId();
//to get the selected sub item. second call to setService()
//$scope.$apply();
if(!$scope.$$phase) $scope.$apply()
vm.setSubService = function(subname) {
serviceFactory.setService(subname);
$state.go('app.next');
//$scope.$apply();
};
};
Хорошо, я сам решил это.
Только что добавлен
cache: false,
в RouterProvider.