2017-08-01 65 views
0

我有一個json對象,我將它與一個Listbox綁定。在UI中,我有moveUp/movingown功能,用戶可以在其中重新排列列表框中項目的位置。我寫了一個自定義的排序功能,將根據序號屬性對項目進行排序並與列表框綁定。Angular2 - 在Listbox中更改值後不會發生排序/雙重綁定

在MoveUp功能中,在更改列表框項目的序號位置後,仍然不會進行排序,即不會重新排列項目的位置。 我在這裏錯過了什麼?

請找到代碼plunker

MoveUp() 
    { 
     var selectedOrdinal = this.selectedValues.ordinal; 
     var targetOrdinal = (selectedOrdinal != 1) ? selectedOrdinal - 1 : 1; 
     var temp = this.StoryPagesList; 
     temp[targetOrdinal].ordinal = selectedOrdinal; 
     temp[selectedOrdinal].ordinal = targetOrdinal; 

     this.StoryPagesList = temp; 
    } 

回答

0

Angular2不支持雙向從代碼結合成模板。您將不得不使用ChangeDetectorRef明確觸發更改檢測。使用它像:

constructor(private ref: ChangeDetectorRef) {} 

然後,每當你想爲改變的值更新模板:

this.ref.detectChanges(); 
+0

做了修改,按您的意見,但仍然沒有在UI反映。 http://plnkr.co/edit/aHbWIQoNpbvtfAQmhF3u?p=preview – Krishnan

+0

我唯一的猜測是,你的排序邏輯沒有反映你的原始變量的變化,它仍然未排序。 – blackspacer

+0

哦,有什麼辦法可以在這裏強制應用排序,即提高任何事件排序?任何想法.. – Krishnan

相關問題