Ember.js 这个.get(';model';)和modelFor之间的区别
我对ember很陌生,并不真正了解这两种语法之间的区别。我应该在什么地方、在什么情况下使用一种或另一种。即,哪一个更适合用于路线,哪一个更适合控制器Ember.js 这个.get(';model';)和modelFor之间的区别,ember.js,ember-data,Ember.js,Ember Data,我对ember很陌生,并不真正了解这两种语法之间的区别。我应该在什么地方、在什么情况下使用一种或另一种。即,哪一个更适合用于路线,哪一个更适合控制器 this.get('model') 相对于 this.modelFor('artists/show') 例如,这个.get('model')将在控制器中的计算属性中使用 this.modelFor用于路由访问父路由的模型,例如重用或解析它。this.get('model')从当前控制器作用域获取模型 此.modelFor('artists/sh
this.get('model')
相对于
this.modelFor('artists/show')
例如,这个.get('model')将在控制器中的计算属性中使用
this.modelFor用于路由访问父路由的模型,例如重用或解析它。this.get('model')从当前控制器作用域获取模型
此.modelFor('artists/show')获取将在指定路由范围内的模型
this.get('model') //controller call
this.modelFor('someRoute') //route call
在Ember中,routessetupController
hook默认执行这一行代码:
setupController: function(controller, model){
controller.set('model', model);
}
这将获取从
model
hook返回的任何内容,并使用此值设置控制器的model
属性。在控制器中,this.get('model')
是访问此模型的正确方法。此外,开发人员可以重写此钩子并执行不同的操作,例如将model
设置为等于从model
钩子(controller.set('model',model.prop))返回的内容的子属性
。这一点值得注意,因为当您从另一个路由调用This.modelFor
时,您不会得到由设置控制器设置的路由的关联控制器模型。如果我记得,您会得到从model
钩子返回的任何内容,钩子下面是路由的currentModel
属性er正确。这两个是在不同的余烬对象上定义的-控制器上的model
属性和路由上的modelFor
方法
首先是model
属性,并将其作为this.get('model')执行
仅获取控制器中已在模型
属性上设置的对象。这意味着,它获取在设置控制器
挂接路由期间设置的任何内容。您无法使用此语句从API获取任何数据。此外,它只允许您获取在当前控制器上设置的对象(此范围)
什么时候成立?
在setupController
钩子中。路由的生命周期首先解析所有与模型相关的回调(beforeModel
、model
和afterModel
)。然后,它使用以下参数执行setupController
:(控制器,模型)
。这意味着它可以访问从模型
钩子和当前控制器
实例解析的所有内容。默认情况下,设置控制器
在控制器上设置模型
。模型
属性:
controller.set('model', model);
您可以使用自定义代码覆盖该属性,例如,在myModel
属性上设置模型-这取决于您。但是,如果您想在控制器代码中获取模型,您必须始终查询您设置模型的属性
如何为工程建模?
modelFor
在路由实例上定义,允许您从应用程序中的任何路由获取model
挂钩结果。您可以在setupController
挂钩中使用它,如下所示:
controller.set('model', this.modelFor('myOtherRoute'));
这种行为可以被视为提高整个应用程序的一致性——它明确表示,在当前路由和控制器中,您使用的数据与myOtherRoute
中的数据相同
它是如何工作的?它查询myOtherRoute.model
属性,该属性存储该路由的model
解析数据。实现相当简单-它查找您的容器(存储路由、控制器、组件等的全局对象)对于名为myOtherRoute
的路由,获取它的model
属性。准确地说,“它接受从model
钩子返回的任何内容,并将控制器的model
属性设置为解析该承诺的结果”。事实上,我应该注意到这个微妙之处。你说“或者解析它”,但此时,父路由模型已解析。是的,但子路由也可以解析为它。我已编辑并输入单词“to”