this.get('model')和modelFor之间的区别

can*_*eel 8 ember.js ember-data

我是ember的新手,并没有真正区分两种语法.我应该在哪种情况下使用哪种情况.即哪一个更适合在路由中使用哪个更适合在控制器中使用.

this.get('model')
Run Code Online (Sandbox Code Playgroud)

相反

this.modelFor('artists/show')
Run Code Online (Sandbox Code Playgroud)

mis*_*nry 7

this.get('model') //controller call
this.modelFor('someRoute') //route call
Run Code Online (Sandbox Code Playgroud)

在Ember中,setupController默认情况下路由挂钩执行以下一行代码:

setupController: function(controller, model){
   controller.set('model', model);
}
Run Code Online (Sandbox Code Playgroud)

这将获取从model钩子返回的任何内容,并model使用此值设置控制器的属性.从控制器内部,this.get('model')是访问此模型的正确方法.此外,开发人员可以覆盖此挂钩并执行不同的操作,例如设置model等于从model挂钩返回的内容的某些子属性(controller.set('model', model.prop).这值得注意,因为当您this.modelFor从另一个路由调用时,您不会获得路由的关联控制器由设置模式setupController.你得到什么从返回model挂钩,这在幕后是路由的currentModel财产,如果我没有记错.


Chr*_*lne 6

this.get('model') 从当前控制器范围中获取模型。

this.modelFor('artists/show') 获取指定路由范围内的模型。