2

私は本当に愚かだと感じますが、これを理解することはできません。Handlebars.jsを試していますが、TwitterAPIからデータを表示することができません。これが私が持っているものです:

$.ajax({
  url : 'http://twitter.com/statuses/user_timeline/alexlande.json',
  dataType : 'jsonp',
  success : function( tweets ) {

    var source = $('#tweet-template').html();
    var template = Handlebars.compile(source);
    var context = tweets;

    $('#container').html(template(context));
  }
});

テンプレートには何も表示されませんが、次のコードは期待どおりに機能します。

var source = $('#tweet-template').html();
var template = Handlebars.compile(source);
var context = { tweets : [
  { text : "This is a test tweet" },
  { text : "And this is yet another" },
  { text : "And you always need three test tweets, right?" }
]};

$('#container').html(template(context));

これは私が理解していない単純なことですよね?

4

2 に答える 2

6

ここでは、オブジェクトをテンプレート関数に渡します。

var context = { tweets : [
  { text : "This is a test tweet" },
  { text : "And this is yet another" },
  { text : "And you always need three test tweets, right?" }
]};

$('#container').html(template(context));

しかし、機能しないコードでは:

 success : function( tweets ) {

    var source = $('#tweet-template').html();
    var template = Handlebars.compile(source);
    var context = tweets;

    $('#container').html(template(context));
  }

その「ツイート」変数はオブジェクトではなく、配列です。

それがあなたが間違っていることだと思います。これを試して:

 success : function( tweets ) {

    var source = $('#tweet-template').html();
    var template = Handlebars.compile(source);
    var context = tweets;

    $('#container').html(template({tweets:context}));//wrap in an Object.
  }

テンプレートを投稿すると、さらに役立つ可能性があります。

于 2012-07-13T06:51:21.270 に答える
3

ハンドルバーテンプレートはオブジェクトのみをラップするため、文字列をオブジェクトに変換する必要があります。

これを試して

success : function( tweets ) {
var source = $('#tweet-template').html();
var template = Handlebars.compile(source);

var context = $.parseJSON(tweets); // convert string into object.
$('#container').html(template(context)); //wrap in an Object.

}

于 2013-09-06T12:35:52.133 に答える