Ember对象没有镶嵌者也没有吸气剂

时间:2016-10-18 13:24:19

标签: ember.js ember-data ember-cli

我正在研究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);
  },
  ...

因此,bulkNewUsersxlsxInput在完成方法arrayToArObj()之后会发生变化,但会在组件(bulkNewUsers)中更新,而另一个则不会。

通过console.logging它们来查看属性我发现bulkNewUsers对其对象的每个属性都有getter和setter,尽管xlsxInput没有任何getter不是setter,它的对象只有三个字符串属性。我假设组件不能拉xslxInputs来自那些缺少的getter和setter。

你知道我做错了吗?

0 个答案:

没有答案