【问题标题】:ember.js - update template from whatever controller observesember.js - 从任何控制器观察到的更新模板
【发布时间】:2013-04-25 08:29:28
【问题描述】:

我刚刚开始使用 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 代码。每当按下索引模板中的按钮时,如何更新“我的”模板中的数据?它应该是 2 个元素的列表(“apple”和“orange”)

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    尝试将控制器内容的值设置为myPropertyHasChanged函数中要显示的列表:

    this.set('content', ["apple", "orange"]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多