2013-04-25 40 views
2

我刚刚开始使用ember.js。我想根据另一个控制器所做的服务器请求更新控制器的数据;即:MyController应该在IndexController更改属性时更新其状态。我认为我有这个权利,但我不确定如何根据观察到的更改更新模板。这里就是我有“直到现在:ember.js - 从任何控制器观察更新模板

<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个元素(“苹果”和“橘子”)

回答

0

尝试将控制器的内容要在myPropertyHasChanged功能显示的列表值的列表:

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