将对象作为ember-model返回,并在JSON对象数组中使用匹配键

时间:2014-08-11 15:10:13

标签: javascript json ember.js

我想要完成的只是将一个对象返回到模型并在手柄模板中循环它的属性。 Thanx-a-Lot提供任何帮助!

我的回答如下:

{"U+554A":{
    "id":1,
   "unihex":"U+554A",
   "num_reference":"呵",
   "totalStrokes":10,
   "kMandarin":"a\n",
   "kDefinition":"exclamatory particle\n"},
 "U+611B":{
   "id":2,
   "unihex":"U+611B",
   "num_reference":"愛",
   "totalStrokes":13,
   "kMandarin":"\u00c3\u00a0i\n",
   "kDefinition":"love, be fond of, like\n"}
}

我尝试了一切。最明显的是这两个,就像试用,但是灰烬检查员显示没有设置模型:

    var sinograms = Ember.$.getJSON(apiurl);
    return sinograms['U+554A'];

我也尝试过:

    var sinograms = Ember.$.getJSON(apiurl);
    return sinograms[0];

NB: 如有必要,我可以更改响应格式。 我知道它在松开对象键时没有用(没有#34; U + 554A"),但是如何选择匹配的字符。

@abuani:根据您的要求。 Thanx btw。

//app.js
App = Ember.Application.create();

App.Router.map(function() {
this.resource('signup');
this.resource('login');
this.resource('profile');
this.resource('overview');
this.resource('practice');
});

App.OverviewRoute = Ember.Route.extend({
model: function() {
    var url = 'http://localhost/~hiufung/RoadToChinese/index.php/api/sinograms/random?limit=2';
    var sinograms = Ember.$.getJSON(url);
    return sinograms;
}
});

//index.html (inline template)
<script type="text/x-handlebars" id="overview">
    <header class="bar bar-nav">
        <a class="icon icon-left pull-left" href="back"></a>        
            <h1 class="title">RoadToChinese</h1>
        <a id="showRightPush" class="icon icon-gear pull-right" href="overview-settings"></a>
    </header>
    <div class="content">
        <div class="content-padded">
            {{#each object in model}}
            <p>{{object.num_reference}}<p>
            {{/each}}
        </div>
    </div>
</script>

1 个答案:

答案 0 :(得分:0)

我无法在您的初始问题中添加评论,但是您可以发布一些其他代码:

加载它的路由器(我想这是在您的模型函数中完成),setupController(如果有的话),以及尝试渲染对象的模板。没有这些信息,我无能为力。

编辑自那以后的代码:

我应该注意到,当Ember期望模型是一个对象数组时,你的模型会返回一个对象。您应该做的第一件事是从服务器返回一个数组。如果您无法控制此项,则可以更改模型以返回

return Ember.A([sinograms]);

这应该有用。

之后,您可以删除每个对象中的嵌套对象。如果你不删除它,那么你还需要使内部对象成为一个数组,这样你就可以迭代它。

让我知道这是怎么回事。

这里是JSBIN