これを例として使用します: http://mustache.github.com/#demo、テンプレートと json は機能的に var に移動できます:
template = '<h1>{{header}}</h1>{{#items}}{{#first}}<li><strong>{{name}}</strong></li> {{/first}}{{#link}} <li><a href="{{url}}">{{name}}</a></li> {{/link}}{{/items}}{{#empty}} <p>The list is empty.</p>{{/empty}}';
これは物事が壊れるところです:
$.ajax({
url: "must_template.js",
dataType: "html",
success: function(data) {
template = data;
}
});
と
$.ajax({
url: "theJson2.txt",
dataType: "json",
success: function(data) {
json = data;
//json = $.parseJSON(data);
}
});
Chrome のコンソールには var とまったく同じ内容が表示されますが、Mustache は入力で「未定義」であるため、入力で中断します。
Uncaught TypeError: Cannot call method 'indexOf' of Undefined
dataType を変更して $.parseJSON を使用して解析しようとしましたが、外部ファイルからテンプレートまたは JSON をインポートしても何も機能しません。
JavaScript オブジェクトのトラブルシューティングに関するヒントがあれば、それも歓迎します。
更新: コードはこちら: http://dev.plitto.com/sandbox/mustache_riff/index4.html theJson.txt は JSON です。正しく引っ張られています。console.log(data.header) が正しく返されます。must_template.js は Mustache テンプレート ファイルです (外部からプルすると、さまざまなテーマが可能になります)。