2013-12-13 3 views
0

Я хочу, чтобы каждая модель в «категории» отображала атрибут {{workflowtype}} своего подкласса, «рабочий поток» внутри «категории/#».Emberjs Предоставление модели (класса) атрибутов ее подкласса

Эти ошибки я получаю:

Assertion failed: The value that #each loops over must be an Array. You passed 

<VpcYeoman.Category:ember654:4> (wrapped in (generated category controller)) ember.js:417 
Uncaught TypeError: Object [object Object] has no method 'addArrayObserver' 

и вот мой код. Я поставил код, который упоминает «рабочий процесс» вверху.

category.hbs

<h2>Category: {{permittype}}</h2><br> 
<img class="department-add-icon" src="images/plus-blue.png"> 
<table class="table table-hover table-responsive sml-margin-left"> 
    <h4>Workflow Type</h4> 
    {{input type="text" value=newWorkflowtype placeholder="Create a workflow and press enter" action="createWorkflow"}} 
    <table> 
    {{#each}} 
     <tr {{bind-attr class="isCompleted:completed"}}> 
     <td> 
      <input type="checkbox" class="toggle"> 
      <label>{{workflowtype}}</label> 
     </td> 
     </tr> 
    {{/each}} 
    </table> 

VpcYeoman.CategoriesRoute = Ember.Route.extend({ 
    model: function() { 
    return this.store.find('category'); 
    return this.store.find('workflow'); 
    } 
}); 

VpcYeoman.Category = DS.Model.extend({ 
    permittype: DS.attr('string'), 
    isCompleted: DS.attr('boolean'), 
    classNameBindings: ['isAdministrator'] 
}); 

VpcYeoman.Workflow = VpcYeoman.Category.extend({ 
    workflowtype: DS.attr('string') 
}) 

VpcYeoman.Category.FIXTURES = [ 
    { 
    id: 1, 
    permittype:'Building' 
    }, 
    { 
    id: 2, 
    permittype:'Electrical' 
    }, 
    { 
    id: 3, 
    permittype:'Zoning' 
    }, 
    { 
    id: 4, 
    permittype:'Fire' 
    } 
]; 

также интересно, как я бы отобразить атрибуты подкласса в пределах класса в светильниках.

VpcYeoman.CategoriesController = Ember.ArrayController.extend({ 
    actions: { 
    createCategory: function() { 
     var permittype = this.get('newPermittype'); 
     if (!permittype.trim()) {return;} 

     var category = this.store.createRecord('category', { 
     permittype: permittype 
     }); 

     this.set('newPermittype', ''); 

     category.save(); 
    }, 
    createWorkflow: function() { 
     var workflowtype = this.get('newWorkflowtype'); 
     if (!workflowtype.trim()) {return;} 

     var workflow = this.store.createRecord('workflow', { 
     workflowtype: workflowtype 
     }); 

     this.set('newWorkflowtype', ''); 

     workflow.save(); 
    } 
    } 
}); 

    <h2>New Category</h2> 
     {{input type="text" value=newPermittype placeholder="Create a category and press enter" action="createCategory"}} 
    <table> 
    {{#each}} 
    <tr {{bind-attr class="isCompleted:completed"}}> 
     <td> 
     <input type="checkbox" class="toggle"> 
     <label>{{#linkTo 'category' this}}{{permittype}}{{/linkTo}}</label> 
     </td> 
    </tr> 
    {{/each}} 
</table> 

VpcYeoman.Router.map(function() { 
    this.resource('categories', { path: '/categories' }); 
    this.resource('category', { path: '/category/:category_id' }); 
}); 

ответ

1

Ваша категория маршрута - это один объект, поэтому вы не можете перебирать его по каждому из них.

Вторая строка в этом крючке никогда не ударил либо,

VpcYeoman.CategoriesRoute = Ember.Route.extend({ 
    model: function() { 
    return this.store.find('category'); 
    return this.store.find('workflow'); 
    } 
}); 

если вы хотите рабочих процессов, доступных вы можете подключить его во время setupController

VpcYeoman.CategoriesRoute = Ember.Route.extend({ 
    model: function() { 
    return this.store.find('category'); 
    }, 
    setupController:function(controller, model){ 
    this._super(controller, model); 
    controller.set('workflows', this.store.find('workflow')); 
    } 
}); 

затем

{{#each workflows}} 
    <tr {{bind-attr class="isCompleted:completed"}}> 
    <td> 
     <input type="checkbox" class="toggle"> 
     <label>{{workflowtype}}</label> 
    </td> 
    </tr> 
{{/each}} 
+0

Вы прибили Это. Теперь я получаю сообщение «Uncaught Error: Nothing обработал событие« createWorkflow ».», Но я еще раз просмотрю свой код еще пару раз, прежде чем спросить. –

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