更新集合中的值

时间:2014-11-02 01:00:08

标签: javascript ractivejs

我有一组帖子作为数据:

var ractive = new Ractive({
    el: '#templateContainer',
    template: '#template',
    data: {
        Posts: [{"Id":"posts/97", Content="Blog post test", Date="Something"}, ...];
    }
});

在某些时候,我收到了博客文章内容发生变化的通知:

funcion onBlogPostContentChanged(postId, newContent) {
    ractive.set(..., newContent);
}

问题在于,我不知道如何指定ractive.set,以便针对具有特定ID的博客帖子更改内容。

1 个答案:

答案 0 :(得分:1)

您可以通过数组索引和属性设置密钥路径:

function onItemChanged(id, newContet) {
    var posts = r.get('Posts'), index = -1

    for(var i = 0; i < posts.length; i++){
        if(post[i].Id === id){
            index = i
            break
        }        
    }

    if(index !== -1){
        r.set('Posts.' + index + '.Content', newContent)
    }

    // or if using "magic: true"**
    Posts[index].Content = newContent
}

有关工作示例,请参阅http://jsfiddle.net/pj6myzch/

** http://docs.ractivejs.org/latest/magic-mode