2014-11-11 2 views
1

ПроблемаИспользование подсказки в emberJs

Я хочу, чтобы показать всплывающую подсказку на щелчке ссылки. Когда я нажимаю на ссылку, он откроет всплывающую подсказку по этой ссылке. Здесь я добавлю данные для создания, а затем нажмите save. Теперь я хочу сохранить эти данные, используя данные ember.

Я не понимаю, что я должен использовать для достижения этого.

То, что я сделал

До сих пор я загрузив все всплывающие подсказки в представлении в конце тела тега.

Как загрузится вид я сделать это, чтобы инициализировать всплывающую подсказку

//initiate the popup for adding new task as the view loaded 
didInsertElement : function(){ 

    //Ember current object 
    var self = this; 

    //element we need to attach qtip on to 
    var trigger_elm = $("#trigger-add-task"); 

    //if element is loaded then attach 
    if(trigger_elm.length > 0){ 
     trigger_elm.qtip({ 
      content : {   
       text : $("#popups #popup-add-task").remove(), 
       title: 'Add New Task', 
       button : 'Close' 
      }, 
      style : { 
       classes : 'font-lucida qtip-light qtip-bootstrap' 
      }, 
      position: { 
       my: 'center left', 
       at: 'center right', 
      }, 
      show: { 
       event: 'click', 
       solo: true 
      }, 
      hide: { 
       event: 'click', 
      }, 
     }) 
    } 

}, 
actions : { 
    saveTask : function(){ 
     console.log('Ember running'); 
    } 
}, 

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

Что я должен использовать для достижения чего-то подобного.

ответ

1

События (так называемые действия в ember.js) могут быть обработаны в ряде различных мест, в зависимости от того, что вы пытаетесь сделать:

  • вид или компонент
  • Контроллер
  • маршрут

в шаблоне, используйте {{действие}}, чтобы указать это:

<button {{action 'addRow'}}>Add Row</button> 

Контроллер будет обрабатывать это первое действие addRow реализуется:

export default Ember.ArrayController.extend({ 
    actions: { 
    addRow: function() { 
     // Do something here 
    } 
    } 
}); 

Если вы возвращаете истинное от действия контроллера, действие маршрут (если он существует) будет срабатывать также. Если вы хотите настроить таргетинг на представление, измените шаблон следующим образом:

<button {{action 'addRow' target='view'}}>Add Row</button> 

Теперь, что вы должны выбрать?

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

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