1

client.jsファイルにこれがあります

Template.data.champ = Meteor.call("checkLeague", function(error, results) {
        console.log(results.data.data);
        return results.data.data;
});

したがって、console.log には問題なく表示されますが、実際には Web ページには表示されません。

これは、ハンドルバー テンプレートを含む私の html ファイルです。

<body>
  {{> hello}}
  {{> data}}
</body>

<template name="hello">
  <h1>Hello World!</h1>
  {{greeting}}
  <input type="button" value="Click" />
</template>

<template name="data">
    {{#each champ}}
        {{name}}
    {{/each}}
</template>

私の理解では (これはハンドルバーに関して非常に限られています)、{{#各チャンプ}} はオブジェクトを繰り返しますか? しかし、何らかの理由で、ページに何も表示されていません。

これはオブジェクト構造です (コンソールに表示されます)。

Object {Aatrox: Object, Ahri: Object, Akali: Object, Alistar: Object, Amumu: Object…}
Aatrox: Object
   id: "Aatrox"
   image: Object
   key: "266"
   name: "Aatrox"
   title: "the Darkin Blade"
   __proto__: Object
Ahri: Object
Akali: Object
Alistar: Object
Amumu: Object
Anivia: Object
Annie: Object
Ashe: Object

基本的に、オブジェクトの値を持つプロパティを持つオブジェクトを渡しています。{{#each} がプロパティを反復処理し、値 (オブジェクト) にアクセスできると仮定してからname、テンプレートでその変数のプロパティにアクセスしようとしましたhandlebarsが、機能しません。

4

4 に答える 4

2

に関するドキュメントからMeteor.call

コールバック関数を最後の引数として含める場合 (関数はシリアル化できないため、メソッドの引数にすることはできません)、メソッドは非同期で実行されます。特に何も返さず、例外もスローしません。

したがって、どのような値Template.data.champが割り当てられても、それは「特に何もありません」です (コールバックから返されるものは、どこでも使用されることはありません)。

次のようにセッションに保存できます。

Session.setDefault('theData', [])

Meteor.call("checkLeague", function(error, results) {
    Session.set('theData', results.data.data)
});

Template.data.champ = function(){
    return Session.get('theData')
}

しかし、代わりにコレクションを使用しようとします。

于 2014-02-11T06:31:25.267 に答える