嗨,我想知道什么是正确的方式来更新路由组件上的属性?Emberjs如何从路由更新组件的属性?
什么我想要做一点背景:
我有我叫CardButtons两个自定义按钮(根据材料德兴)旁边的一个名为描述的空白区,我要的是创造一个悬停事件触发ajax调用来从数据库中检索详细数据并将其呈现在描述区域中。
检查更新
到目前为止,我已经创造了这样的路线:
export default Ember.Route.extend({
selectedModule: '',
model: function() {
return {
selectedModule: 'employeeModule'
};
},
actions: {
showDescription: function (params) {
this.set('model.selectedModule', params);
}
}});
我的路径模板调用我的组件是这样的:
<div class="row">
{{sis-db-description-render idTitle=model.selectedModule}}
</div>
和组件定义像这样:
export default Ember.Component.extend({
info: null,
ready: false,
didInsertElement: function() {
this.queryData();
},
queryData: function(){
/** Does an Ember.$.post request to the API with the idTitle as param**/
}
});
这是第一次执行它完全加载细节数据,但是当我尝试刷新数据时事件不会触发第二个调用。我非常敬重,因为我没有以适当的方式更新模型。
关于如何更新组件属性的任何想法?
UPDATE:
感谢@kumkanillam我能找到我的路线上一种方法,我添加了下面的代码:
setupController: function (controller, model) {
this._super(...arguments); //if its new/index.js route file then you can use controller argument this method.
controller.set('selectedModule', 'employeeModule');
},
actions: {
showDescription: function (params) {
console.info(params);
this.controllerFor('new.index').set('selectedModule', params);
}
}
通过这样做,现在认为每次更新内容,我仍然不知道这是否是正确的方式,但它现在可行。
'didInsertElement'将被称为初次单独渲染。 – kumkanillam
我需要什么方法来更新?据我了解,如果我更新组件路线上的porperty组件应该重新渲染并调用didUpdateAttrs方法,但不是这种情况didUpdateAttrs永远不会被调用。 – DeividKamui
其实你不更新。在路线'this.set('model.selectedModule',params);'这里模型是未定义的。它在控制器中定义。 – kumkanillam