Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以余烬模型的形式返回对象,并在JSON对象数组中使用匹配的键_Javascript_Json_Ember.js - Fatal编程技术网

Javascript 以余烬模型的形式返回对象,并在JSON对象数组中使用匹配的键

Javascript 以余烬模型的形式返回对象,并在JSON对象数组中使用匹配的键,javascript,json,ember.js,Javascript,Json,Ember.js,我试图实现的是只向模型返回一个对象,并在Handlebar模板中循环它的属性。谢谢你的帮助 我的回答如下: {"U+554A":{ "id":1, "unihex":"U+554A", "num_reference":"呵", "totalStrokes":10, "kMandarin":"a\n", "kDefinition":"exclamatory particle\n"}, "U+611B":{ "id":2, "

我试图实现的是只向模型返回一个对象,并在Handlebar模板中循环它的属性。谢谢你的帮助

我的回答如下:

{"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];
注意: 如有必要,我可以更改响应格式。 我知道,当我在没有U+554A的情况下松开对象关键点时,它会起作用,但接下来如何选择匹配的字符

@阿布阿尼:根据你的要求。Thanx顺便说一句

//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>

我无法对您的初始问题添加评论,但您能否发布一些其他代码:

加载该对象的路由器我想这是在您的模型函数、setupController(如果有)和试图渲染对象的模板中完成的。没有这些信息,我几乎帮不上什么忙

编辑,因为有代码:

我应该注意到,当Ember希望模型是一个对象数组时,您的模型返回一个对象。您应该做的第一件事是将服务器的返回设置为数组。如果您无法控制此操作,则可以更改模型以返回

return Ember.A([sinograms]);
这应该行得通

之后,可以删除每个对象中的嵌套对象。如果不删除它,那么还需要将内部对象设置为数组,以便可以对其进行迭代

让我知道这是怎么回事


下面是添加了一些代码的

。控制器由ember自动实例化,因此还没有代码。我认为这与模板无关。我在JSONlint中检查了响应格式,它是有效的JSON。但是,可能是响应缺少方括号,[]被视为数组吗?是的!就这样。您需要做的第一件事是将内容包装到数组中。Ember希望模型是一个对象数组。将响应更改为对象数组后,您可能可以取出初始的U+554A定义。这是不必要的,因为您已经有了唯一的ID。好的,那么在ember中查找和显示我想要的特定对象的逻辑方式是什么?我想一次显示一个对象。所以我想我应该在模型中做一些逻辑,在模型中我选择哪个has对象有一些匹配的属性unihex='U+554A'。这就是为什么我首先添加了初始的U+554A键,以便从响应中选择正确的对象。到目前为止唯一有效的方法就是失去U+554Akeys。{{{each}}然后工作。又是Tnx。啊,这是一个不同类型的问题!因此,除非您对对象建模,否则我会尝试远离对象类型:[object],原因有很多。但是,由于在对象themsleves中有unihex键,因此有一种在控制器中访问这些属性的巧妙方法。Ember有一个computed属性,您可以设置一个类似UniHex的属性:Ember.computed.filterBy'content.UniHex','some_value';如果您想了解更多信息,我将设置一个JSBin。一旦在控制器上设置了computed属性,就可以像其他任何东西一样对其进行迭代。哇。这实际上是一个很好的解决方案。我添加这些初始键的全部原因是为了避免使用for循环进行迭代。。我想案子已经解决了,嘿嘿。太多了!PS:我刚进入Ember.js,所以我还在想把什么代码放在哪里。。我只有后端MVC框架的经验。