Список повторений не обновляется, когда меню и содержимое находятся в другом шаблоне (Ionic Framework)

0

Я работаю над одним проектом по ионным каркасам.

Где застрял список, который не обновляется. После нажатия на элемент меню список должен быть соответствующим образом обновлен.

Поскольку обе вещи находятся в другом контроллере, я не знаю, как я могу сделать 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();
    };

};
  • 0
    Вы должны определить правильное значение ng-repeat
  • 0
    ng-repeat = "services in lists" для пользователя ng-repeat = "serives in vm.list"
Показать ещё 1 комментарий
Теги:
ionic

1 ответ

0

Хорошо, я сам решил это.

Только что добавлен

cache: false,

в RouterProvider.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню