我正在使用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
控制器时,控制器将使用刚刚获取的模型.
您可以使用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
控制器时,控制器将使用刚刚获取的模型.