0

我有一个奇怪的问题,每当我用 id 刷新页面时,子插座都会变空。我有一个由 {{link-to}} 助手生成的列表。

<script type="text/x-handlebars" id="twod">
        <div class="row">
            <div class="span4">
                <img src="/img/2DPipeline.jpg" />
            </div>

            <div class="span3">
                <h4>People with Roles</h4>
             <div class="row">
                 <div class="span2">    
                        <ul>
                            {{#each item in model}}
                <li>{{#link-to 'twoduser' item}}{{item.firstname}} {{/link-to}}</li>
                            {{/each}}

                        </ul>
                    </div>
                    <div class="row">
                        <div class="span">
                            {{outlet}}
                        </div>
                    </div>
                </div>
        </div>
        </script>

这是 twoduser 模板,

<script type="text/x-handlebars" data-template-name="twoduser">

        <div class="row">
            <div class="span3">
              Full Name: {{firstname}}{{lastname}}
              EMail: {{email}}
            </div>
        </div>

        </script>

应用程序.js,

    App.Router.map(function() {
        this.resource('twod', function() {
            this.resource('twoduser', {
                path : ':user_id'
            });
        });
        this.resource('threed');

    });
App.TwoduserRoute = Ember.Route.extend({
    model : function(params) {
        return App.Twod.findBy(params.user_id);
    }
});

App.Twod.reopenClass({
    findAll : function() {
        return new Ember.RSVP.Promise(function(resolve, reject) {
            $.getJSON("http://pioneerdev.us/users/index", function(data) {
                var result = data.users.map(function(row) {
                    return App.Twod.create(row);
                });
                resolve(result);
            }).fail(reject);
        });
    },
    findBy : function(user_id) {
        var user = App.Twod.create();

        $.getJSON("http://ankur.local/users/byId/" + user_id, function(data) {
            user.setProperties(data.user);
        });
        user.set("user_id", user_id);
        return user;
    }
});

App.TwodRoute = Ember.Route.extend({
    model : function() {
        return App.Twod.findAll();
    }
});

单独选择每个都可以正常工作并填充子插座,但是当我刷新它时,它变为空白。

任何想法可能导致问题?

4

1 回答 1

1

我可以看到两个可能的问题。

首先是您的 URL 在 和 之间是不同findAllfindBy。那是故意的吗?

第二个是findAll返回一个 Ember 承诺 ( Ember.RSVP.Promise),但findBy没有。

[更新]:基于评论中的 JSBin:http: //jsbin.com/iPUxuJU/1/

这里的问题是 API 端点在user响应中返回了一个数组。它目前看起来像这样:

{user : [{ ... }] }

理想情况下,它看起来像这样:

{user : {....} }

您可以更改 API 端点,也可以更新代码以从该数组中提取第一个元素。代替 :

user.setProperties(data.user);

你可以这样做:

user.setProperties(data.user[0]);

这是一个修改后的 JSBin:http: //jsbin.com/oquBoMA/1#/twod/2

于 2013-09-15T02:14:12.150 回答