Динамические вычисляемые свойства в 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.
Какой альтернативный способ сделать это?
2 ответа
Решение
Вычисленное свойство не рекомендуется только на 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
Это также, кажется, работает нормально, если вы снова открываете:
Todos.todosController = Ember.Controller.create({
// ** SNIP ** //
});
Todos.todosController.reopen({
countCompleted: function() {
return this.get('todos').filterProperty('completed', true).length
}.property(),
});