我正在尝试在 Ember 2.0.1 中实现嵌套组件,但是toggleProperty
在操作处理程序中使用函数时出现了奇怪的行为。
第一个组件如下所示:
// ./components/comp-1.js
import Ember from 'ember';
export default Ember.Component.extend({
prop1: false,
hello: "Default text of comp-1",
_changeHello: function() {
this.set('hello', 'Text set by comp-1');
}.on("init"),
actions: {
customAction1() {
this.toggleProperty('prop1');
}
}
});
.
// ./templates/components/comp-1.hbs
<button {{action 'customAction1'}}>{{hello}}</button>
第二个是:
// ./components/comp-2.js
import Ember from 'ember';
export default Ember.Component.extend({
data: [],
_doSomeImportentStuff: function() {
var data = this.get('data');
data = [{name: 'Text set by comp-2', bool: false},
{name: 'Text set by comp-2', bool: true}];
this.set('data', data);
}.on("init")
});
.
// ./templates/components/comp-2.hbs
{{#each data as |d|}}
{{comp-1 hello=d.name prop1=d.bool}}
{{/each}}
该组件comp-2
创建两个按钮,其名称为由 comp- 1设置的 Text。如果我单击一个按钮,文本将更改为由 comp - 2设置的文本,因为执行了this.toggleProperty('prop1')
在操作处理程序中调用的函数customAction1
。如果我删除此功能或删除prop1
from的设置,./templates/components/comp-2.hbs
那么一切都会按预期工作,即按钮的文本始终保持为由 comp- 1设置的文本。
为什么toggleProperty
函数会设置其他属性?
难道我做错了什么?
可以在此处查看实际行为:http: //ember-twiddle.com/90798b4952deb4a83de1