Emberjs如何从路由更新组件的属性



嗨,我想知道从路由更新组件属性的正确方法是什么?。

关于我想做什么的一点背景:

我有两个自定义按钮,我称之为CardButtons(基于材料设计),旁边是一个名为description的空白区域,我想要的是创建一个悬停事件,触发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**/
}
});

第一次执行时,它会完美地加载详细数据,但当我尝试刷新数据时,该事件不会触发第二次调用。我认为这是因为我没有以适当的方式更新模型。

有关于如何更新组件属性的想法吗?

更新:

多亏了@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);
}
}

通过现在这样做,视图每次都会更新内容,我仍然不知道这是否是正确的方法,但目前有效。

在下面的代码中,模型没有在route中定义。它是通过CCD_ 1钩子在相应的控制器中定义的。

showDescription: function (params) {
this.set('model.selectedModule', params);
}

因此,在您的情况下,您可以在控制器中定义操作并更新model.selectedModule
如果您想在路由中执行操作,

showDescription: function (params) {
let cont = this.controllerFor('route-name');
cont.set('model.selectedModule', params);
}

最新更新