【问题标题】:Change content [] object property without removing or adding更改 content [] 对象属性而不删除或添加
【发布时间】:2012-09-18 22:10:18
【问题描述】:

我设置了一个对象列表,将它们添加到 content[] 数组列表中。到目前为止一切顺利。 App.list 中的 Ember DOM 显示正确的数据。现在,当我开始更改内容属性而不删除/添加/replaceAt() App.list 中的任何对象时,Ember 似乎没有选择它。

查看: {{#App.list.content 中的每个项目}} {{item.title}} {{/每个}}

代码: 功能 myApp() { 应用 = Ember.Application.create({});

  App.Item = Ember.Object.extend({
    title: null,
    parent: null
  });

  App.MyList = Ember.Object.extend({
    title: null,
    content: [],
    changed: function() {
      console.log('here');
    }.observes('content')
  });

  App.list = App.MyList.create({
    title: "foobar",
    content: [
      App.Item.create({
        title: "item1"
      }),
      App.Item.create({
        title: "item2"
      })
    ]
  });
  console.log(App.list.content);

  // Add 3rd object to list
  App.list.get('content').pushObject(
    App.Item.create({
      title: "item3"
    })
  );
}

..后来在一些随机的 Ember ArrayController 中我这样做: for (var i = 0; i

查看我的 App.list 内容是正确的,但视图不正确。我错过了什么吗?如果我不得不猜测 ArrayHasChanged() 似乎被操纵用于更改数组大小或更改我没有做的对象,我正在更改 content[] 数组的特定对象中的属性数据。有可能还是我必须删除At()/添加/删除对象?

【问题讨论】:

    标签: model-view-controller ember.js


    【解决方案1】:

    您需要使用 get 和 set 以便观察者/绑定触发您的更改。

    // Bad
    App.list.content[i].title = "blah";
    
    // Good
    App.get('list').objectAt(i).set('title', 'blah');
    

    如果这仍然对您不起作用,则可能缺少其他内容。如果你能发布一个 jsfiddle 会有很大帮助!

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 2018-02-03
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      相关资源
      最近更新 更多