我刚刚开始使用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代码。如何按下索引模板中的按钮,如何更新“my”模板中的数据?它应该是2个元素的列表(“apple”和“orange”)
答案 0 :(得分:0)
尝试将控制器内容的值设置为您希望在myPropertyHasChanged
函数中显示的列表:
this.set('content', ["apple", "orange"]);