我正在研究Ember 2.7应用程序并且有一点问题。 我有一个组件从服务中提取属性,然后在更新时在视图中显示它们。 这是实际代码的一点(我知道这段代码在目的上没有意义,但它不是重点):
component.js:这是拉取和显示属性的组件。该组件从提供数据的服务中调用几乎相同的方法(2个数组)
导出
default Ember.Component.extend({
init() {
this._super(...arguments);
this.set('xlsxInput', this.get('newUser').getXlsxInput());
this.set('bulkNewUsers', this.get('newUser').getBulkNewUsers());
},
newUser: Ember.inject.service(),
actions: {
processCsvInput() {
let arrayedCsv = csvToArray.compute(this.get('csvInput'));
console.log("processCsvInput:", arrayedCsv);
this.get('newUser').populateBulkNewUsers(arrayedCsv);
this.get('newUser').setXlsNewUsers(arrayedCsv);
},
...
service.js:这是提供属性和方法的服务
var emptyNewUser = Ember.Object.extend({
init() {
this._super();
},
visible: true
});
export default Ember.Service.extend({
users: Ember.inject.service(),
bulkNewUsers: [],
xlsxInput: [],
arrayToArObj(src, data, _that) {
_that.get(src).arrayContentWillChange(0, null, data.length);
var buffer = _that.get(src);
data.forEach(function(user){
buffer.push(emptyNewUser.create({
firstname: user[0],
lastname: user[1],
email: user[2]
}));
});
_that.set(src, buffer);
_that.get(src).arrayContentDidChange();
},
populateBulkNewUsers(bulkArray) {
console.log("empty bulk", this.get('bulkNewUsers'));
this.get('arrayToArObj')('bulkNewUsers', bulkArray, this);
},
setXlsNewUsers(incomingArray) {
console.log("empty xls", this.get('xlsxInput'));
this.get('arrayToArObj')('xlsxInput', incomingArray, this);
},
...
因此,bulkNewUsers
和xlsxInput
在完成方法arrayToArObj()
之后会发生变化,但会在组件(bulkNewUsers
)中更新,而另一个则不会。
通过console.logging它们来查看属性我发现bulkNewUsers
对其对象的每个属性都有getter和setter,尽管xlsxInput
没有任何getter不是setter,它的对象只有三个字符串属性。我假设组件不能拉xslxInputs
来自那些缺少的getter和setter。
你知道我做错了吗?