2

私はember.jsを始めたばかりです。別のコントローラーによって行われたサーバー要求に基づいて、コントローラーのデータを更新したいと考えています。つまり、IndexController がプロパティを変更した場合、MyController はその状態を更新する必要があります。その権利はあると思いますが、観察された変更に基づいてテンプレートを更新する方法がわかりません。これが私が今まで持っているものです:

<script type="text/x-handlebars" data-template-name="application">
  <div>
    {{outlet}}
  </div>
</script>

<script type="text/x-handlebars" data-template-name="index">
  <form>
    <label for="go">Data</label>
    <input type="text" id="go" />
    <button type="button" {{action "findData"}}>Find Data</button>
  </form>
</script>

<script type="text/x-handlebars" data-template-name="my">
  <ul>
    {{#each entry in controller}}
    <li>{{entry}}</li>
    {{/each}}
  </ul>
</script>

これらは現在 index.html に保存されているテンプレートです

var App = Ember.Application.create()

App.IndexController = Ember.Controller.extend({
  myProperty: false,

  findData: function() {
    console.log("Requesting data from the server ..");
    myProperty = true;
  }
});

App.MyController = Ember.Controller.extend({
   needs: ['index'],

   myPropertyHasChanged: function() {
   var propertyChanged = this.get('controllers.index.myProperty');
   if (propertyChanged) {
      console.log("property has changed");
      return ["apple", "orange"];
   }
}.observes('controllers.index.myProperty')
});

これが実際の ember.js コードです。index テンプレートのボタンが押されるたびに、「my」テンプレートのデータを更新するにはどうすればよいですか? 2 つの要素 ("apple" と "orange") のリストである必要があります。

4

1 に答える 1

0

myPropertyHasChangedコントローラーのコンテンツの値を、関数に表示するリストに設定してみてください。

this.set('content', ["apple", "orange"]);
于 2013-04-25T22:24:36.863 に答える