Marionette js Преглед на анализирани данни от html и изобразяване

Имам оформление

<div id="region">
<h1>Header</h1>
<ul class="items">
    <li>Number = 1</li>
    <li>Number = 2</li>
    <li>Number = 3</li>
</ul>
</div>

Това изобразяване от бекенда Как да вземете данни от маркирането и да изобразите само нов ItemView и да премахнете тези, които не са в json файла

    class Collections extends Backbone.Collection
          initialize: ->
            console.log 'Collections init'


    class NowListning extends Marionette.CompositeView
          template :  _.template("<h1>Header</h1> <ul class='items'></ul>")
          itemView: NowListningItem
          itemViewContainer: '.items'
          initialize : ->
            console.log 'init:: View: Local -> NowListning'



   class NowListningItem extends Marionette.ItemView
          template :  _.template("<%= text %>")
          tagName: "li"     

   domData = []
        $('items li').each ->
          item:
            text: $(this).text()
          domData.push(item)

   collections = new Collections(domData)
        nowListning = new NowListning
        collections.fetch
          url: 'items.json'

Ако създам регион и извикам метода Show, той променя CompositeView, но искам да актуализирам само списъка, без заглавие

json 
[
 {
   "text": "Number = 3"
 },
 {
   "text": "Number = 4"
 }
]

И искам да видя

<div id="region">
    <h1>Header</h1>
    <ul class="items">
        <li>Number = 3</li>
        <li>Number = 4</li>
    </ul>
    </div>

person Dilan Mckey    schedule 02.04.2014    source източник
comment
json файл? може ли да добавите неговия src?   -  person Evgeniy    schedule 03.04.2014
comment
@Evgeniy Т.е в мен вече е отрисуван блок с бека и не искам да го прерисоввам, а просто актуализирайте колекцията на данни и премахнете старите itemView и добавете нови   -  person Dilan Mckey    schedule 03.04.2014
comment
Аха, понял - на всеки случай поясню - надо да запихне колекцията в атрибута на данните - тогава на ините вьюхи ее може лесно да спаси. Когато дойде време за извличане, колекцията може да се нулира. Тема самата отрендерится актуална колекция.   -  person Evgeniy    schedule 03.04.2014


Отговори (1)


За да получите данни от маркиране, можете да анализирате html с Jquery, но не препоръчвам да го правите. По-добрият начин е да добавите атрибут на данни към html кода, който получавате от сървъра:

например :

<div id="region" data-collection='[{ "id" : 1, "text": "Number = 1" }, { "id" : 2, "text": "Number = 2" }, { "id" : 3, "text": "Number = 3" }]'>
    <h1>Header</h1>
    <ul class="items">
        <li>Number = 1</li>
        <li>Number = 2</li>
        <li>Number = 3</li>
    </ul>
</div>

Така че, когато визуализирате collectionView - можете лесно да получите първоначална колекция. (при инициализация например).

По-късно колекцията, която извиквате .fetch(), ще бъде обединена с json резултат. .fetch() има няколко поведения за сливане - можете да изберете подходящо за вас, в този случай мисля, че "reset"

Можете също да проверите Статията на Дерик за подобен проблем.

person Evgeniy    schedule 03.04.2014