• MVVM, кто должен загружать данные?

    miraage
    @miraage
    Старый прогер
    ViewModel вызывает метод в сервисе/фабрике. Полагаю, загрузка идет асинхронно, поэтому должен получится такой псевдокод

    vm.init = function() {
      var self = this;
      
      service.loadUsers().then(function(users) {
        self.users = users;
     });
    };
    Ответ написан
    6 комментариев
  • В чем разница написания таких событий клика у jquery?

    @IoannGrozny
    Front-end разработчик
    1. Делегирование события. Необходим, когда у вас имеются динамические манипуляции с контентом. Такие конструкции, как правило, более производительны, т.к. событие навешивается один раз на родительский элемент. Может не сработать, если у вас прерывается всплытие(об этом забывать нельзя):
    <body>
        <div class='no-bubble'>
            <p class='click-target'></p>
        </div>
    </body>

    // клик по .click-target не сработает никогда!
    $('body').on('click','.click-target', function(){
        // do something...
    });
    $('body').on('click','.no-bubble', function(e){
        e.stopPropagation();
    });

    2 и 3 работают аналогично друг другу, но за небольшим исключением:
    $('#id').click();
    // не равносильно:
    $('#id').on('click');
    // а работает как:
    $('#id').trigger('click');
    // т.е. не навешивает обработчик клика, а эмулирует клик по объекту.

    А кроме того, 1 и 2 варианты позволяют делать так:
    $('id').on('click mouseover mouseout', function(e) {
       if (e.type === 'click') {
            // обработать клик...
       } else if (e.type === 'mouseover') {
           // ну принцип понятен, да?..
       }
    });
    Ответ написан
    2 комментария