2014-11-02 2 views
0

У меня есть коллекция постов как данные:значение Обновление в коллекции

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, чтобы содержимое было изменено для сообщения в блоге с определенным идентификатором.

+0

Является ли 'NewContent' целой почтой? Или просто свойство объекта post в массиве, который вы хотите обновить? – martypdx

+0

@martypdx, это свойство – SiberianGuy

ответ

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

+0

Похоже, «Сообщения». + индекс не работает. Tried 'Posts [' + index + ']', но он тоже не работает. – SiberianGuy

+0

Обновлено, проверьте пример jsfiddle. – martypdx

+0

Спасибо, он работает. Немного странно, что правильный синтаксис - Posts.index, но не Posts [index] – SiberianGuy