什么是"强迫"模型钩子射击的最佳方法是什么?

 PHP大傻子 发布于 2023-02-13 15:32

我正在使用ember.js 1.2,我的一条路线有一个非常动态的模型.当我第一次跳到路线或当我粘贴网址的模型钩子的URL时,然后设置控制器触发,一切按预期工作.

当我稍后进入路径(但不是直接来自url)时会出现问题 - 这只会触及setupController挂钩(并且模型方法永远不会触发).但从技术上讲,改变的是url(和父模型).使用此模型,它主要是从父模型定义的(使用该父模型在运行时获取一组新的动态配置).

那么每次加载这个特定的路由时,如何强制setupController重新执行模型钩子?(好像模型方法每次都要开火).

或者......我应该在setupController中获取这个动态模型,并通过让它返回一个空对象来保持模型钩子无逻辑吗?

更新

App.ChildIndexRoute = Ember.Route.extend(App.ModelMixin, {
  setupController: function(controller, model) {
    this._super(controller, model);
    var parent = this.modelFor('parent');
    return this.getForParent(parent).then(function(things) {
      controller.set('model', things);
    });
  }
});

Kingpin2k.. 6

您可以使用setupController钩子而不是模型钩子,这是一种完全可以接受的方式来处理它.

从技术上讲,过渡是调用模型钩子并将其提供给setupController的过程.

链中的哪个位置不会触发模型钩?这是一个带有一些嵌套资源的简单应用程序.

http://emberjs.jsbin.com/AtebAsOS/6/edit

这个例子中的关键代码位于DogsRoute中:

App.DogsRoute = Em.Route.extend({
  setupController: function(controller, model){
    model = Em.get(this.modelFor('cow'), 'dogs');
     this._super(controller, model); 
  }
});

来自文档:

setupController使用当前路径的控制器和model钩子提供的模型调用[ 方法] .

因此,当您使用获取的狗模型覆盖模型并将其传递给_super控制器时,控制器将使用刚刚获取的模型.

1 个回答
  • 您可以使用setupController钩子而不是模型钩子,这是一种完全可以接受的方式来处理它.

    从技术上讲,过渡是调用模型钩子并将其提供给setupController的过程.

    链中的哪个位置不会触发模型钩?这是一个带有一些嵌套资源的简单应用程序.

    http://emberjs.jsbin.com/AtebAsOS/6/edit

    这个例子中的关键代码位于DogsRoute中:

    App.DogsRoute = Em.Route.extend({
      setupController: function(controller, model){
        model = Em.get(this.modelFor('cow'), 'dogs');
         this._super(controller, model); 
      }
    });
    

    来自文档:

    setupController使用当前路径的控制器和model钩子提供的模型调用[ 方法] .

    因此,当您使用获取的狗模型覆盖模型并将其传递给_super控制器时,控制器将使用刚刚获取的模型.

    2023-02-13 15:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有