Angular2 - Sorting/Dual-binding 在列表框中更改值后不会发生
Angular2 - Sorting/Dual-binding doesn't happen after values are changed in Listbox
我有一个 json 对象,我将其与列表框绑定。在 UI 中,我有 moveUp/movedown 功能,用户可以在其中重新排列项目在列表框中的位置。我已经编写了一个自定义排序功能,它将根据序号 属性 对项目进行排序并与列表框绑定。
在 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;
}
Angular2 不支持从代码到模板的双向绑定。您将必须使用 ChangeDetectorRef 显式触发更改检测。像这样使用它:
constructor(private ref: ChangeDetectorRef) {}
然后每当您想为更改的值更新模板时:
this.ref.detectChanges();
我有一个 json 对象,我将其与列表框绑定。在 UI 中,我有 moveUp/movedown 功能,用户可以在其中重新排列项目在列表框中的位置。我已经编写了一个自定义排序功能,它将根据序号 属性 对项目进行排序并与列表框绑定。
在 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;
}
Angular2 不支持从代码到模板的双向绑定。您将必须使用 ChangeDetectorRef 显式触发更改检测。像这样使用它:
constructor(private ref: ChangeDetectorRef) {}
然后每当您想为更改的值更新模板时:
this.ref.detectChanges();