2013-10-01 2 views
0

У меня есть коллекция, которая имеет поля; имя, фамилия и изображение.Meteor template image redraw

Когда я использую его в цикле #each, а когда получаю новые данные, #each петля перерисовывает изображения. «#isolate» не работает.

Каждые новые записи приходят на страницу, изображения снова перерисовываются.

<head> 
    <title>image</title> 
</head> 

<body> 
    {{> records}} 
</body> 

<template name="records"> 
    <table> 
     {{#each records}} 
     <tr> 
      <td>{{name}}</td> 
      <td>{{surname}}</td> 
      <td><image src="/{{src}}" /></td> 
     </tr> 
     {{/each}} 
    </table> 
</template> 

Как это исправить?

Извините за мой английский :)

Спасибо всем

ответ

1

Вы можете исправить это путем разделения шаблона на два. Когда они будут раздельными, метеор обновит только измененную запись.

<template name="records"> 
    <table> 
    {{#each records}} 
     {{>record}} 
    {{/each}} 
    </table> 
</template> 

<template name="record"> 
    <tr> 
     <td>{{name}}</td> 
     <td>{{surname}}</td> 
     <td><image src="/{{src}}" /></td> 
    </tr> 
</template> 
+0

Первые данные поступают, но когда я вставляю новые данные, он говорит: «Исключение из Deps re compute: Ошибка: невозможно создать вторую ориентир в одной ветке " –

0

Если вы полностью хотите, чтобы избавиться от какой-либо реактивности здесь, убедитесь, что правильно использовать {{#isolate}}:

Это позволит предотвратить повторное оказывать на (то есть) records.insert(...);

<template name="records"> 
    <table> 
     {{#isolate}} 
     {{#each records}} 
     <tr> 
      <td>{{name}}</td> 
      <td>{{surname}}</td> 
      <td><image src="/{{src}}" /></td> 
     </tr> 
     {{/each}} 
     {{#isolate}} 
    </table> 
</template> 

Но это не будет:

<template name="records"> 
    <table> 
     {{#each records}} 
     {{#isolate}} 
     <tr> 
      <td>{{name}}</td> 
      <td>{{surname}}</td> 
      <td><image src="/{{src}}" /></td> 
     </tr> 
     {{#isolate}} 
     {{/each}} 
    </table> 
</template>