我正在尝试将 $.getJSON 与 Ember.js 一起使用(基本上我试图避免 Ember-Data)。这是我的代码,
App = Ember.Application.Create();
App.Model = Ember.Object.extend({
});
App.Users = App.Model.extend({
id: null,
name: null
});
App.UsersRoute = Ember.Route.extend({
model: function(){
return App.Users.findAll();
}
});
App.Users.reopenClass({
findAll: function() {
var result = Ember.ArrayProxy.create({content: []});
$.getJSON('user.php', function(data) {
$.each(data, function(i, row) {
result.pushObject(App.Users.create(row));
});
});
return result;
}
});
这是我的 HTML:
<body>
<script type="text/x-handlebars" data-template-name="MyTemplate">
{{#each item in controller }}
<tr><td>
<p> {{item.name}}</p>
</td></tr>
{{/each}}
</script>
<script type="text/x-handlebars">
<h1>Application Template</h1>
{{outlet}}
</script>
</body>
我遇到的问题是这不是加载模型,我还需要 Controller 吗?或者我还缺少什么?
最佳答案
您只是在创建应用程序时出现了一个小拼写错误。
App = Ember.Application.create();
PS:你的代码看起来不错。仅缺少路由器映射,但我猜您故意将其排除在示例之外。
更新:
您应该为您的UsersRoute
定义一个映射:
App.Router.map(function() {
this.resource("users", { path: "/users" });
});
您的模板应相应命名为users
:
<script type="text/x-handlebars" data-template-name="users">
{{#each item in controller }}
<tr><td>
<p> {{item.name}}</p>
</td></tr>
{{/each}}
</script>
最后,您应该在主应用程序模板中创建指向您的路线的链接:
<script type="text/x-handlebars">
<h1>Application Template</h1>
{{outlet}}
{{#linkTo "users"}} Link to UsersRoute{{/linkTo}}
</script>
关于javascript - Ember 中的 $.json 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18487878/