2015-02-27 4 views
0

Привет, я изучаю ember и застрял с флажками.ember.js проверить все флажки

Heres мой шаблон (часть):

<table> 
        <thead> 
        <tr> 
         <th class="cell-delete"> 
          {{input type="checkbox" id=colorId name=colorId class="js-custom-checkbox" checked=allChecked}} 



         </th> 
         <th class="cell-star"> 
          &nbsp; 
         </th> 
         <th class="cell-broadcaster">Author</th> 
         <th class="cell-title">Title</th> 
         <th class="cell-date">Date</th> 
        </tr> 
        </thead> 
        <tbody> 

        {{#each message in model.entities}} 

         <tr> 
          <td class="cell-delete"> 

           {{input type="checkbox" id=trash name="trash[]" tabindex= message.id class="js-custom-checkbox check1" }} 

          </td> 
          <td class="cell-star"> 
           {{input type="checkbox" name=message.id tabindex=message.id class="starBox" }} 

          </td> 
          <td class="cell-broadcaster"> 
           {{message.notification.autor.firstName}} {{message.notification.autor.lastName}} 
          </td> 
          <td class="cell-title"> 
           {{#link-to 'notifications.details' message.notification.id}}{{message.notification.title}}{{/link-to}} {{#unless message.isRead}} (new) {{/unless}} 
          </td> 
          <td class="cell-date"> 
           {{formatDateWithDistance message.notification.cdate}} 
          </td> 
         </tr> 

        {{/each}} 

        </tbody> 
       </table> 

И мой вопрос заключается в том, чтобы включить действия, чтобы проверить все флажки в этом шаблоне?

Данные для этого принимается в маршрутизатор формы JSon апи:

export default Ember.Route.extend(AuthenticatedRouteMixin, { 

model: function() { 
    return $.getJSON(ENV.apiHost + "/api/notificationdata/user/all"); 

}, 
..... 

ответ

0

Если вы действительно заинтересованы в изменении данных о вашей модели, вы должны подключить флажки к чему-то. Прямо сейчас кажется, что они будут отображаться, и вы можете проверить и снять отметку с них, но на самом деле это ничего не изменит, кроме изменения цвета нескольких пикселей на вашем компьютере.

С помощью флажков вы должны подключить их к значению в текущем контроллере. Вы делаете это, настраивая логическое значение в этом контроллере и привязывая его к атрибуту вашего флажка. Если это значение в контроллере было названо allChecked он может выглядеть следующим образом:

{{input type="checkbox" checked=allChecked}} 

Как только это будет сделано, вы можете подключить один последний флажок для свойства контроллера, который будет инициировать контроллер изменить все значения, связанные с установите флажки на true.

Здесь действительно недостаточно контекста, чтобы дать вам ответ, который вы можете сразу подключить и заставить его работать. Но ваш контроллер может выглядеть так:

...Ember.Controller.extend({ 

    allChecked: null, 
    allCheckedWatcher: function(){ 
    if(this.get('allChecked') === true){ 
     // function to set all the other properties to true 
    } 
    }.observes('allChecked'), 

}) 

Будьте осторожны, приведенный выше пример будет работать только для проверки всех ящиков. Это не ослабило бы их. Это очень рудиментарно и только включено, чтобы проиллюстрировать идею того, как все это работает.

Возможно, вы захотите, чтобы read up on checkboxes, затем проверьте часть Ember TodoMVC, где они упоминают toggling all todos взад и вперед.

+0

Спасибо за этот ответ. Это дает мне более подробную информацию, и я должен попробовать. То, что я пытаюсь сделать, это проверить все флажки без внесения каких-либо изменений в модель te. У меня есть список сообщений, и у меня есть флажки. когда я проверю некоторые из них и нажмите кнопку, удалите его. Это прекрасно работает.Все, что я пытаюсь сделать, это добавить флажок, который выберет все из них - не нужно ничего менять. BTW. У меня есть другой флажок, и я хочу внести изменения в модель после выбора. Но мое значение равно 0/1, а не false/true. Будет ли это работать? – BigBazooka007

+0

Я бы использовал false/true в свойстве checkbox и просто установил наблюдателя, чтобы посмотреть это значение и изменить фактическое свойство на 1/0 соответственно. – Don

0

Ok благодаря кончиков Дона я сумел сделать так им разместить свой код для других:

первый шаблон:

-checkbox в selece/Отменить все:

{{input type="checkbox" checked=allChecked}} 
  • кол-во:

    
    {{#each message in model.entities}} 
    {{input type="checkbox" id=trash name="trash[]" checked=message.isDrop tabindex= message.id class="check1" }} 
    
    {{/each}} 
     
    

Мой маршрутизатор:

export default Ember.Route.extend(AuthenticatedRouteMixin, { 

model: function() { 

    return $.getJSON(ENV.apiHost + "/api/forum/user/all"); 

}, 

afterModel: function(model) { 

    model['entities'].setEach('isDrop', false); 


}, 
... 

И мой контроллер:

export default Ember.ObjectController.extend({ 
selected: false, 

isDrop: false, 

allChecked: null, 
allCheckedWatcher: function(){ 
    var model = this.get('model'); 
    if(this.get('allChecked') === true){ 

     model['entities'].setEach('isDrop', true); 
    } else { 

     model['entities'].setEach('isDrop', false); 
    } 
}.observes('allChecked'), 
.... 
Смежные вопросы