下面的代碼工作正如我所期望的那樣,我可以通過content.dev.name
訪問environments
模板中的數據。遠程AJAX數據到控制器
雖然我正在努力通過AJAX請求填充這些數據。
我有一個rest API,它返回下面控制器中的結構。它在加載應用程序時需要調用一次。
這是我工作的代碼:
控制器
App.EnvironmentsController = Ember.Controller.extend();
App.EnvironmentsController.reopenClass({
find: function(){
return {dev: {key: 'dev', name: 'Development'}, prod: {key: 'prod', name: 'Production'}};
return this.content;
},
});
App.EnvironmentsView = Ember.View.extend({
templateName: 'environments'
});
路線
...
router.get('applicationController').connectOutlet('environments', App.EnvironmentsController.find());
...
模板
<script type="text/x-handlebars" data-template-name="environments">
<ul id="env-menu">
{{#with content}}
<li>{{dev.name}}</li>
<li>{{prod.name}}</li>
{{/with}}
</ul>
</script>
這裏是用AJAX控制,我不能讓數據通過相同格式的模板。
注意:我知道response.data.environments本身返回的結構與我上面手動編碼的對象相同。
App.EnvironmentsController = Ember.Controller.extend();
App.EnvironmentsController.reopenClass({
environments: {},
find: function(){
$.ajax({
url: 'http://localhost:3000/environments',
dataType: 'json',
context: this,
success: function(response){
this.environments = response.data.environments;
}
});
return this.environments;
},
});
App.EnvironmentsView = Ember.View.extend({
templateName: 'environments'
});
注意,我有一些類似的工作時,控制器是一個陣列控制器,以及數據被作爲一個數組返回。我需要知道如何使這個對象專門工作。
更新:從問題
更多資訊是一個小提琴:http://jsfiddle.net/coder1/csvZX/
我開出了不同的模式。我只是試圖繞過我的頭,通過和獲取對象並通過控制器發送它。
這是一個非常了不起的教程(http://trek.github.com/)我開始使用,我可以使用數組控制器工作,而不是在使用單個對象時。
'App.EnvironmentsController.find()'不會返回AJAX請求的結果,因爲'A'jax是'A'syncronous。 – sabithpocker
使用'set'和'get','this.set('environments',response.data.environments);' – sabithpocker
是的,我開始使用本教程,其工作原理如下:http://trek.github.com/ ..我想知道同樣的事情,但它的工作。引用:'App.Contributor.find()' – Coder1