2012-04-02 22 views
1

ここで説明したよう:http://www.jblotus.com/2011/05/24/keeping-your-handlebars-js-templates-organized/このjavascript関数をどのように呼び出すのですか?

私は、この機能を使用しようとしています:

(
    function getTemplateAjax(path, callback) { 
     var source; 
     var template; 

     $.ajax({ 
      url: path, 
       success: function(data) { 
        source = data; 
        template = Handlebars.compile(source);  

        //execute the callback if passed 
        if (callback) callback(template); 
      } 
     }); 
    } 

    //run our template loader with callback 
    (getTemplateAjax('js/templates/handlebarsdemo.handlebars', function(source) { 
     //do something with compiled template 
     $('body').html(template); 
    })() 
)() 

は私はJSに新しいですので、どのように私はこれを使用することができますか?

私がしようとしています:

  1. ハンドルバーのパスを渡しが
  2. ファイルテンプレートに挿入され、HTMLが機能によって戻されるべきJSONオブジェクトを渡します。

アップデート:この作品:

は答えを得た、コードにタイプミスがありました。

関数を呼び出すとき、引数はソースであったものの、テンプレートとして使用されていました。

function getTemplateAjax(path, callback) { 
    var source; 
    var template; 

    $.ajax({ 
     url: path, 
      success: function(data) { 
       source = data; 
       template = Handlebars.compile(source);  
       if (callback) callback(template); 
     } 
    }); 
} 

getTemplateAjax('js/templates/handlebarsdemo.handlebars', function(template) { 
    data = {title: "hello!" , body: "world!"} 
    $('body').html(template(data)); 
}) 

答えて

0

コードは正しいので、正しく呼び出しているようです。
jQueryが正しく設定されていることを確認する必要があります(jQueryグローバル変数の値をチェックしてください。これは "未定義"であってはなりません)。
また、ハンドルバーが実際にあると思われる場所にあるかどうかを確認する必要があります。相対的なURLではなく絶対URLを使用する必要があります。

+0

私はちょうどjsの非常に新しい上記の機能を使用する方法を知っていません。それは何を返し、どのように私はこれを呼び出すことができますか?このコード全体を

0

まず、あなたがその機能に合っているかどうかを確認してください。あなたは、あなたがAJAX呼び出しからの応答を得ているかどうかをチェックしているなら、try ... exceptionを使用してください。

ajax呼び出しから結果を戻す場合にのみ、結果を表示できます。