如果调用是从控制器中的操作进行的,如何将端点数据保存在模型存储中

How to save the endpoint data in model store if call is made from actions in controller

我使用 ember-modal-dialog 创建了一个对话框。将要显示在对话框中的内容是从服务器接收的。我能够调用服务器并获取数据。但是我不知道如何将数据从操作中保存到我的模型存储中。

Controller.js

actions:{
    fiModal1: function(photo){
        Ember.$('body').addClass('centered-modal-showing');
        var currentState = this;
        photo.toggleProperty('fidialogShowing'))
        console.log('opendialog');
        raw({
            url: 'http://example.co.in/api/photo/'+photo.get('like_pk')+'/likes/',
            type: 'GET',
        }).then(function(result){
            currentState.set('model.feed.liker',result)
        });
    },
    bookmarked:function(liker){
       liker.set('is_bookmarked',true)
    },


}

feed.hbs

<p {{action "fiModal" photo }}>
    {{photo.0.numlikes}}
</p>
{{#if photo.fidialogShowing}}
    {{#modal-dialog translucentOverlay=true close = (action "fiDialogClose" photo)}}
    {{#each model.feed.liker as |liker}}
        <div class = "col-sm-6">
            {{#if liker.is_bookmarked}}
                <a href {{action "unbookmarked" liker}}>
                    <img class="foll" src = "images/button-bookmark-secondary-state-dark-b-g.png">
                </a>
            {{else}}
                <a href {{action "bookmarked" liker}}>
                    <img class="foll" src = "images/button-bookmark.png">
                </a>
            {{/if}}
        </div>
    {{/each}}

现在的问题是,当对话框内的操作被触发时,它会抛出一个错误:

fiver.set is not function

我认为出现问题是因为我没有将结果保存在模型商店中。我应该怎么做才能使对话框内的操作也起作用?

您可以将服务器的结果封装到 Ember.Object

Ember.Object.create(json)

例如更换你的线路

currentState.set('model.feed.liker',result)

来自

currentState.set('model.feed.liker', result.map(function(item) {
  return Ember.Object.create(item);
})

这样 model.feed.liker 中的每个元素都应该有一个方法 'set' 可用。