Javascript, не могу захватить нажатие кнопки - PullRequest
0 голосов
/ 12 апреля 2019

Этот шаблон находится на странице друзей init.Я пытался вызвать нажатие кнопки двумя способами: идентификатор кнопки # или просто с помощью #id, но мне не удалось зафиксировать нажатие кнопки.Я отладил его, и он никогда не включается в функцию onClick.Буду признателен за любую помощь или ссылку на документацию.Спасибо за ваше время.

<script class="friend-list" type="text/template7">
    <div class="friendsamigos">
      <ul>
        {{#each this}}
          <li><a>{{this.displayName}}</a><button id="getfriendprofile" class="col button button-fill button-little" data="{{this.uid}}" >"Go"</button></li>             
        {{/each}}
      </ul> 
    </div>   
  </script>

$$(document).on('page:init', '.page[data-name="friends"]', function(e){
    console.log("Friends page loaded");
    postMyFriends();
    $$('#back-home-button').on('click', function(e){
        view.router.navigate('/home/')
    })
    $$('#getfriendprofile').on('click', function(e){
        var friendUID = $$(this).data();
        console.log(friendUID);
        console.log($$(this).data());
        //requestFriendProfile(friendUID);
    })

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

решаемая.Проблема была в том, что я загружал функцию onclick на странице init.Пока шаблон еще не загружен.Я сделал что-то вроде этого:

 <script class="friend-list" type="text/template7">
    <div class="friendsamigos" id="id-list-amigos">
      <ul>
        {{#each this}}
          <li><a>{{this.displayName}}</a><button class="friendProfileButton col button button-fill button-little" data-uid={{this.uid}} >"Go"</button></li>             
        {{/each}}
      </ul> 
    </div>   
  </script>

И загрузил функцию onclick после загрузки шаблона:

function postMyFriends(){
    var localStorageUserData = JSON.parse(localStorage.getItem('myuser'));
    var uid = localStorageUserData.uid;
    app.request.post(serverurl + 'postMyFriends', {user : uid}, onSuccess, onError)

    function onSuccess(data, status){
        if( status === 200){

         TemplatesWorkInRequest('.friend-list', '#friendsamigos', data )

        }
        $$('.friendProfileButton').on('click', function(e) {
            var friendUID = $$(this).data('uid');
            console.log(friendUID);
           // requestFriendProfile(friendUID);
        });

    }
    function onError(err){
        console.log(`Something went wrong ${err}`)
    }

}

Не думаю, что это нужно, но вот функция шаблона:

function TemplatesWorkInRequest(templateToCompile, insertPathSelector, data){
    var template = $$(templateToCompile).html();
    var compiletTemplate = Template7.compile(template);

    var dataToJSON = JSON.parse(data)
    var html = compiletTemplate(dataToJSON);
    $$(insertPathSelector).html(html);

}

Спасибо всем за попытку помочь мне

0 голосов
/ 12 апреля 2019

Используйте $ вместо $$ в вашем коде так:

$(document).on('page:init', '.page[data-name="friends"]', function(e){
    console.log("Friends page loaded");
    postMyFriends();
    $('#back-home-button').on('click', function(e){
        view.router.navigate('/home/')
    })
    $('#getfriendprofile').on('click', function(e){
        var friendUID = $(this).data();
        console.log(friendUID);
        console.log($(this).data());
        //requestFriendProfile(friendUID);
    })
...