更改组件的属性不会触发其他组件的“更改”

时间:2016-08-18 12:34:28

标签: javascript ember.js

我在同一层次结构中有两个组件(兄弟姐妹)。我将模型传递给他们两个。我正在更改组件中的模型数据,并希望捕获来自另一个组件的所有更改,但组件的“更改”事件仅在用于更改值的组件上触发。它在其他组件中不起作用。我怎样才能做到这一点?我只想通过这两个组件进行沟通。

应用程序/路由/ applications.js

export default Ember.Route.extend({
    model() {
        return Ember.RSVP.hash({
            rejectFormData: {
                application_id: null,
                reject_reason: null,
                subject: '',
                body: ''
            }
        });
    }
});

应用程序/模板/ applications.hbs:

{{applications-list rejectFormData=model.rejectFormData}}
{{reject-dialog rejectFormData=model.rejectFormData}}

应用/组件/拒绝-dialog.js

export default Ember.Component.extend({
    change() {
        // this fires only when changed through this component
        // I want this to fire even when changed from other components
        alert('changed!');
    },
    actions: {
        rejectApplication(formData) {
            this.set('formData.application_id', 123);
        }
    }
});

应用程序/组件/应用-list.js

export default Ember.Component.extend({
    actions: {

        rejectApplication (application) {
            this.set('rejectFormData.application_id', application.Application.id);
        }
    }
});

1 个答案:

答案 0 :(得分:-1)

你无法做你想做的事。行动不是以兄弟的方式冒泡。您可以在一个中更改数据,并在其他数据中查看数据更改。

如果要在更改数据时执行逻辑,则需要使用observer。

<tr>