0

У меня есть страница, которая в основном представляет собой строки элементов div. Я создаю эти элементы div из массива. Каждый объект в массиве - это карта с ключевым именем пользователя. Вот примерMeteor двусторонняя привязка - обновление пользовательского интерфейса

{{#each rows}} 
     <div class="col-md-1 poolbox">{{this.username}}</div> 
{{/each}}  

Когда страница загружается, она успешно захватывает любое значение this.username. У меня есть событие click на этом div, так что когда он щелкнут, я создаю документ в mongo и также хотел бы обновить значение на карте до нового значения.

'click .divbox': function(e, t) { 
    //alert("You Clicked " + JSON.stringify(this)); 
    Box.insert({ 
    username: 'NEW VALUE',   
    createdAt: new Date() 
    }); 

После того, как он толкнул в базу данных, я хотел бы изменить значение имени пользователя на карте на новое значение, которое должно аффективно изменить значение в пользовательском интерфейсе. Я пробовал делать this.username = "NEW VALUE"; после того, как я надавил на него БД, но это не сработало.

В конце концов я хотел бы сделать pub/sub так, чтобы он постоянно вытаскивал из базы данных.

ответ

0

Вы можете реально изменить значение, просто добавьте помощника в массив строк и проверьте, не изменилось ли имя пользователя.

Пример

JS

Template.home.helpers({ 
    rows : function(){ 
    var rows = [{username :'abc'},{username :'abd'},{username :'ab'}]; 
    _.each(rows,function(value,key) { 
     if(Box.find({old_username : value.username}).count() > 0){ 
     rows[key].username = Box.find({old_username : value.username}).fetch()[0].username;    
     } 
    })  
    return rows; 
    } 
}) 



Template.home.events({ 
'click .poolbox': function(e, t) { 
    var current_username = 'NEW VALUE'; 
    Box.insert({ 
     username: current_username,   
     old_username : $(e.currentTarget).text(), 
     createdAt: new Date() 
    }); 
    } 
}) 

и в вашем HTML

{{#each rows}} 
    <div class="col-md-1 poolbox">{{username}}</div> 
{{/each}} 
Смежные вопросы