数组控制器中项目的观察者

时间:2014-02-22 12:31:33

标签: ember.js

我正在使用Array控制器存储一些项目数组。

每个项目都有 isChecked (设置为true或false)和值。

My Array控制器看起来像

Application.PlatformsController = Ember.ArrayController.extend({

contentPropertyFirst: function () {
    return true;
}.property("content.@each.isChecked"),

contentPropertySecond: function () {
    return true;
}.property("content.@each"),                                                                                                           

contentPropertyThird: function () {
    return true;
}.property("content"),

contentObserver: function () {
    return true;
}.observes("content"),

init: function () {
    this.setData();
},

setData: function () {

    Appication.Services.fetch('Data') //returns data from my service.
     .done(function (data) {
         this.get('content').clear();
         $.each(data, function (index, item) {
             this.get('content').pushObject(item);
             this.get('content')[index].isChecked = true;
         });
     })
    .fail(function () {
        alert('Error');
    });
}

在另一个控制器中,我将其中一个属性设置为上述控制器

Application.EditPlatformsController = Application.UI.Controller.extend({
start: function () {
    this.set('listController',Application.PlatformsController.create());
},

在我看来,我将复选框w.r.t渲染到listController中可用的数组项列表。

  {{#each listController}}
  {{view CoreCheckbox checkedBinding="isChecked"}} {{ value  }}
  {{/each }}

在上面的例子中,只有在将项目推送到内容时才会调用contentObserver方法。

我想对检查取消选中 复选框的操作执行某些操作。

请协助我这样做。

1 个答案:

答案 0 :(得分:0)

计算属性在调用时会动态更新。如果您希望观察者触发更改,请将“property”更改为“observes”

contentPropertyFirst: function () {
  return true;
}.observes("content.@each.isChecked"),

contentPropertySecond: function () {
  return true;
}.observes("content.@each"),                                                                                                           

contentPropertyThird: function () {
  return true;
}.observes("content"),

contentObserver: function () {
  return true;
}.observes("content"),