2014-01-28 235 views
2

我正在使用此模板來創建通知條目列表,該列表第一次正常工作。飛鏢聚合物更新聚合物dom元素

NoticeList nle = querySelector('#noticeList'); 
nle.notices = notices; 

但我第二次調用這段代碼得到執行,網站根本沒有改變。 我錯過了什麼?

謝謝

<polymer-element name="notice-list"> 
    <template> 
    <ul id = "noticeEntrys"> 
     <template repeat="{{notice in notices}}"> 
      <li> 
      <notice-element notice={{notice}}></notice-element> 
      </li> 
     </template> 
     </ul> 
    </template> 
    <script type="application/dart" src="notice_list.dart"></script> 
</polymer-element> 

<polymer-element name="notice-element"> 
    <template> 
    <div class="notice"> 
     <textarea rows="8" readonly>{{notice.getText()}}</textarea> 
     <div class="controlls"> 
     <button type="button" name="delete" on-click={{delete}}>Delete</button> 
     <button type="button" name="change" on-click={{change}}>Change</button> 
     </div> 
    </div> 
    </template> 
    <script type="application/dart" src="notice_element.dart"></script> 
</polymer-element> 
@CustomTag('notice-list') 
class NoticeList extends PolymerElement { 
    NoticeList.created() : super.created() { 
    } 

    @published List<Notice> notices; 
} 

@CustomTag('notice-element') 
class NoticeElement extends PolymerElement { 
    NoticeElement.created() : super.created() { 
    } 

    @published Notice notice; 

    void delete(Event e, var detail, Node target) { 
    Datamanager.removeNotice(notice); 
    Controller.updateListe(); 
    } 

    void change(Event e, var detail, Node target) { 
    Controller.updateActiveElement(notice); 
    } 

    void setNotice(Notice n) { 
    notice = n; 
    } 
} 

編輯:我更新的代碼相同,我在第一時間 我通過互聯網服務和新數據獲取新的數據集列表是否正確

static void noticesLoadedPolymerList(List<Notice> notices) { 
    NoticeList nle = querySelector('#noticeList'); 
    nle.setNotices(notices); 
    } 

編輯2:我添加了一個簡單的整數來顯示列表大小 @observable int listSize; 如果我分配新列表,但顯示的內容沒有更改,值會更改。

+0

能否請你添加的代碼如何創建更新'notices'列表?你提供的代碼看起來很好。 –

+0

@GünterZöchbauer我添加了一些額外的信息,也許它有幫助,因爲我現在很困惑,爲什麼它不工作 – lolsharp

+0

你嘗試'toObservable(通知)'之前分配給聚合物元素?仍然無法看到您創建列表的位置。 –

回答

0

最後帽子的時間來解決問題。

我的問題是我將開始聚合物這樣

initPolymer(); 

時,我應該有這樣

開始它

更多關於這一點,你可以在這裏找到https://code.google.com/p/dart/issues/detail?id=15379

+0

這已改變 - 請參閱http://stackoverflow.com/questions/20932180 –

0

如果您將notices設置爲NoticeList爲新的List實例,它應該識別此更改。 如果您在第一次嘗試時指定notices,並且只在第二次嘗試中修改,則必須使您的notices列表可觀察到var notices = toObservable([new Notice('notice1'), new Notice('notice2'), ...])

您還沒有提供您的Notice課程的代碼。 可能有必要讓你的Notice類可觀察到的一樣:

類聲明擴展了可觀測{ @observable字符串文本對象; }

這樣聚合物承認,如果只通知實例變化(屬性不改變(添加/刪除)notices名單。