2013-09-23 16 views
9

To, co staram się zrobić, naprawdę uprościłoby moje życie.Wywołanie funkcji wewnątrz szablonu podkreślenia za pomocą szkieletu

Jak mogę to zrobić:

To jest mój widok w aplikacji pliku

window.ArtView = Backbone.View.extend({ 
     template:_.template($('#art').html()), 
     render:function (eventName) { 
      var output="blablbla"; 
      $(this.el).html(this.template({"output":output})); 
      return this; 
     } 
    }); 
    ... 
    // function that I would like to call 
    function callFunction(){ 
     console.log('it works!'); 
    } 

Szablon w index.html

<script type="text/tempate" id="art"> 
     <div data-role="header" class="header" data-position="fixed"> 
      <a href="#" data-icon="back" class="back ui-btn-left">Back</a> 
     </div> 
     <div data-role="content" class="content"> 
      callFunction(); 
      <% console.log(output) %> 
     </div> 
</script> 

Jak mogę zadzwonić CallFunction() w moim szablonie czy coś podobnego?

Każdy pomysł?

Dzięki!

+3

Miej szablony suche. Twoje szablony nie powinny zawierać żadnej logiki. – TYRONEMICHAEL

+0

To prawda, ale myślę, że istnieją aplikacje do wywoływania funkcji z szablonów. –

Odpowiedz

15

Wierzę, że można wywołać funkcje w szablonie dopóki obiekt szablonu posiada funkcję.

render:function (eventName) { 
    var output="blablbla"; 
    var data = _.extend({"output":output}, callFunction); 
    $(this.el).html(this.template(data)); 
    return this; 
} 

następnie w szablonie:

<%= callFunction() %> 
0

To źle. Pomyśl o szablonie jako łańcuchu, znacznikach html. Zdobądź go i zastąp niektóre jego części rzeczywistymi danymi. Jeśli chcesz wykonać trochę manipulacji DOM, powinny one zostać wykonane po tym. Daj nam znać, co chcesz zrobić w funkcji callFunction, a my poprowadzimy Cię w odpowiednie miejsce dla tej logiki.

+0

Tak, masz rację, myślałem o tym. Chciałbym callFunction() na wywołanie jPlayer (jquery media player), który potrzebuje źródła (url.mp3). Adres URL źródła znajduje się w moich wynikach. Trochę podchwytliwe, prawda? –

3

to jest, jak to zrobiłem, to działa dobrze.

template: _.template(templateText , { 
      imports : { 
       check :function (val){ 
        // blah blah 
        } 
       } 
      } 
     }), 

następnie w szablonie html

<%= check('value') %> 
Powiązane problemy