代码之家  ›  专栏  ›  技术社区  ›  jax

观察Ember.computer.alias上的属性永远不会激发

  •  1
  • jax  · 技术社区  · 11 年前

    我正在观察searchModel,但searchInvalid从未开火。这是为什么?此外,是否有一种方法可以观察所有searchModel属性,而不必列出所有属性?

    export default Ember.ArrayController.extend(InfiniteScroll.ControllerMixin, {
        needs : ['search'],
        searchModel: Ember.computed.alias("controllers.search.model"),
    
        searchInvalid : function() {
            this.transitionToRoute('search');
        }.observes( 'searchModel.sortColumn', 'searchModel.sortDirection', 'searchModel.loadNumber',
                    'searchModel.vehicleRegistration', 'searchModel.driverName', 'searchModel.site',
                    'searchModel.fromPlanDate','searchModel.toPlanDate'), //is there a way to watch the entire model?
    
        perPage: 25,
        page : 1
    
    });
    

    更新


    我只是通过使用以下语法来实现这一点:

    searchModelBinding: "controllers.search.model",
    
    1. 为什么这样做有效,但上面的方法不行?
    2. 我仍然不清楚如何观察模型上的所有属性
    1 回复  |  直到 11 年前
        1
  •  3
  •   Kingpin2k    11 年前

    Ember不会观察到从未被征用的财产。这有点奇怪,但这是一个有点古怪的惰性加载概念。

    export default Ember.ArrayController.extend(InfiniteScroll.ControllerMixin, {
        foo: function(){
          this.get('searchModel'); // prime the engines.
        }.on('init'), 
        needs : ['search'],
        searchModel: Ember.computed.alias("controllers.search.model"),
    
        searchInvalid : function() {
            this.transitionToRoute('search');
        }.observes( 'searchModel.sortColumn', 'searchModel.sortDirection', 'searchModel.loadNumber',
                    'searchModel.vehicleRegistration', 'searchModel.driverName', 'searchModel.site',
                    'searchModel.fromPlanDate','searchModel.toPlanDate'), //is there a way to watch the entire model?
    
        perPage: 25,
        page : 1
    
    }); 
    

    不,没有任何方法可以观察模型上的每个项目。