2014-02-01 3 views
1

с использованием уголька-данные 1.0.0-beta.5 и имеют следующие маршруты и маршрутизатораArrayController Не Обновление При удалении записей

App.Router.map(function() { 
     this.resource('users', function() { 
      this.route('new'); 
     }); 
     this.resource('user', { path: '/user/:id' }, function() { 
      this.route('edit'); 
     }); 
    }); 

App.UsersIndexRoute = Ember.Route.extend({ 
    model: function(){ 
     return this.store.findAll('user'); 
    }, 
    setupController: function (controller, data) { 
     this._super(controller, data); 
    } 
}); 

App.UserEditRoute = Ember.Route.extend({ 
    model: function() { 
     return this.store.find('user', this.modelFor("user").id); 
    }, 
    setupController: function (controller, data) { 
     this._super(controller, data); 
     }, 
     actions: { 
      delete: function(){ 
       var router = this; 
       var model = this.currentModel; 
        model.destroyRecord().then(function(){ 
         router.transitionTo('users'); 
        }); 

       } 

      } 
    }); 

Однако, когда я переход обратно на маршрут пользователей ArrayController по-прежнему имеет удаленный объект в этом. Любые идеи относительно того, почему это так и как подождать, пока он не будет удален до перехода?

+0

Действительно ли это удаляется с сервера? – Kingpin2k

+0

Да. Однако у меня есть индекс упругости, возвращающий объект пользователя. единственное, что я могу придумать, - это то, что время от времени оно удаляется из индекса и возвращается в вызове/users. – Rob

+0

Я подозревал, что так много, вы ожидаете захватить новых пользователей, когда вы снова нажмете маршрут, или это не важно? – Kingpin2k

ответ

-1

В вашем случае, так как вы хотите восстановить всех пользователей и ваш сервер, вам нужно удалить запись (или это произойдет позже), вы можете рассмотреть возможность перехода и удаления.

delete: function(){ 
    var model = this.currentModel; 
    this.transitionTo('users').then(function(){ 
    model.destroyRecord(); 
    }); 
} 
+0

это все равно не решит проблему, так как вызов/users вернет удаленный объект еще – Rob

+0

, он еще не был бы удален, вы перейдете к пользователям, он будет получать новых пользователей, затем удалите этого пользователя, затем он будет удален из списка. – Kingpin2k

+0

в моем случае это все еще не решает проблему. см. мое решение ниже. – Rob

0

вид работы вокруг, но решает проблему.

в UsersIndexContoller добавить массив для хранения удаленных идентификаторов

App.UsersIndexController = Ember.ArrayController.extend({ 
    deleted: [] 
}); 

Тогда просто добавить идентификатор удаленного модели этого массива и фильтра в методе setupController.

App.UsersEditRoute = Ember.Route.extend({ 
    delete: function(){ 
      var router = this; 
      var model = this.currentModel; 
      var usersController = this.controllerFor('users.index'); 

      model.destroyRecord().then(function(){ 
       usersController.get('deleted').push(model.id); 
       router.transitionTo('users'); 
      }); 

     } 

    } 
}); 

App.UsersIndexRoute = Ember.Route.extend({ 
    setupController: function (controller, data) { 
     var deleted = this.controller.get('deleted'); 
     var filtered = data.filter(function(user){ 
      return !deleted.contains(user.id); 
     }); 
    data.set('content', filtered); 
    this._super(controller, data); 
    } 
}); 
Смежные вопросы