2

問題:以下に示すように、コントローラーが「pages」配列を変更すると、計算されたプロパティ「tnop」が更新されません。

関連する本のモデルコード:

sections: []
tnop: function() 
{
var n = 0;
var sections = this.get('sections');
if (!sections)
  return n;

for (var i=0; i < sections.length; i++) {
  n += sections[i].pages.length;
}
return n;
}.property('sections.@each.pages.length')

関連するコントローラーコード:

var sections = EM.model.getPath('book.sections');
var aps = EM.model.getPath("ps");
$.each(sections, function(si, section) {
  var bp = [];
  if (json && json.ia) {
    bp = section.get("pages");
    var ns = aps[json.ssi];

      var lp = ns.get("lp");
      var rp = ns.get("rp");
    if (rp) {
      bp.insertAt(lp.number-1, rp);
      bp[lp.number-1] = rp;
    }
    if (lp) {
      bp.insertAt(lp.number-1, lp);
      bp[lp.number-1] = lp;
    }
  }
});

4

2 に答える 2

5

現状では、@eachから直接ネストされたパスを観察することはできません。代わりに、ネストされた@eachプロキシを使用する必要があります。

property('sections。@each.pages。@each.length')

于 2012-04-20T11:53:53.497 に答える
1

次のコードを使用して同じ問題を解決しました:

filters: [],
content: [],

filterFun: function()
{

}.property('content.@each', 'filters.@each').cacheable(),
于 2012-08-19T21:48:00.277 に答える