2013-02-11 3 views
9

Я пытаюсь сделать приложение ember. У меня есть вычисляемое свойство и контроллер выглядит следующим образом:Динамические расчетные свойства в Ember.JS устарели?

// The Controller 

Todos.Controller = Ember.Controller.create({ 

    // ** SNIP ** // 

    countCompleted: function() 
    { 
     return this.get('todos').filterProperty('completed', true).length 
    }.property(), 
}); 

// The View 

{{Todos.Controller.countCompleted.property}} Items Left 

Теперь учебник я отслеживаю использует старую версию ember.js. Я исправил все ошибки, но это:

Uncaught Error: assertion failed: Ember.Object.create no longer supports defining computed properties.

Что альтернативный способ сделать это?

ответ

10

Вычисленное свойство устарело только на функцию create() объекта. Если вы хотите создать вычисленное свойство, тогда вы должны сначала указать extend() объект, а затем create().

Например:

// The Controller 

Todos.TodosController = Ember.Controller.extend({ 

    // ** SNIP ** // 

    countCompleted: function() 
    { 
     return this.get('todos').filterProperty('completed', true).length 
    }.property(), 
}); 

// Note the lower case 't' here. We've made a new object 
Todos.todosController = Todos.TodosController.create(); 

// The View 


// We reference the created object here (note the lower case 't' in 'todosController') 
{{Todos.todosController .countCompleted.property}} Items Left 
+0

О, я вижу спасибо. Можно ли иметь пример с использованием вышеуказанного кода? Сейчас я немного из глубины. – andy

+0

Конечно, я обновил сообщение с кодом. – Deif

+0

Большое спасибо! – andy

2

Это также, кажется, работает нормально, если вы делаете возобновлять:

Todos.todosController = Ember.Controller.create({ 
    // ** SNIP ** // 
}); 

Todos.todosController.reopen({ 
    countCompleted: function() { 
     return this.get('todos').filterProperty('completed', true).length 
    }.property(), 
}); 
+1

Это на самом деле путь, если вы хотите, чтобы вычисленное свойство на вашем ' Объект приложения. – Nico

Смежные вопросы