Javascript Nativescript将LIstPicker与JS对象一起使用
我正在尝试将ListPicker与对象数组一起使用,我的列表呈现为所有元素的标签显示[object object] 我想指定哪个属性用作listpicker的“标签” 不幸的是,Nativescript ListPicker只接受字符串数组,我不能使用我的对象数组,因为标签将调用toString() 我找到了一个基于以下内容的替代解决方案:Javascript Nativescript将LIstPicker与JS对象一起使用,javascript,nativescript,angular2-nativescript,Javascript,Nativescript,Angular2 Nativescript,我正在尝试将ListPicker与对象数组一起使用,我的列表呈现为所有元素的标签显示[object object] 我想指定哪个属性用作listpicker的“标签” 不幸的是,Nativescript ListPicker只接受字符串数组,我不能使用我的对象数组,因为标签将调用toString() 我找到了一个基于以下内容的替代解决方案: buy my app使用page router outlet,不使用element,因此我无法使用上述建议的方法。在这种情况下,是否有任何可能的方法将Lis
buy my app使用page router outlet,不使用element,因此我无法使用上述建议的方法。在这种情况下,是否有任何可能的方法将ListPicker与对象数组一起使用,或者有任何不依赖于页面元素加载事件的解决方法?您根本不必使用任何加载的事件。只需重写
toString
方法并将项目传递给ListPicker:
public countries: any[] = [
{
value: 0,
name: 'Sweden',
toString: () => {
return 'Sweden';
}
},
{
value: 1,
name: 'Denmark',
toString: () => {
return 'Denmark';
}
},
{
value: 2,
name: 'Norway',
toString: () => {
return 'Norway';
}
},
{
value: 3,
name: 'Finland',
toString: () => {
return 'Finland';
}
},
{
value: 4,
name: 'Iceland',
toString: () => {
return 'Iceland';
}
},
];
将它们传递给选择器:
<ListPicker [items]="countries"></ListPicker>
有一个未记录的拉取请求,使得绑定到对象变得更容易: 将新属性添加到
列表视图
组件(textField
和
valueField
-应与JSON对象数组一起使用):
textField
-告诉listview应该使用哪个属性来显示每个项目
valueField
-告诉listview应该使用哪个属性来更新selectedValue
selectedValue
-是将包含selectedValue
的属性,如果指定了valueField
,则它将包含该属性中的值,否则它将包含整个选定项
示例(角度):
<ListPicker [items]="printers" textField="name" valueField="id"></ListPicker>
假设我有一个按钮,当按下该按钮时,会动态更改所有countries对象上的toString方法。在我滚动ListPicker之前,ListPicker不会拾取已更改的toString方法。要使changedetection与对象一起工作,您需要做些特殊的事情吗?@apricity还可以使用扩展运算符
this.myData=[…myData]
更新引用,或者您可能需要使用changeDetectorRef.markForCheck()
。没有一个例子就很难说。markForCheck()起作用了:我以前很困惑,并且使用了detectChanges()。这很有帮助:哇“三个小时前回答”,问题来自2017年的“及时”话题:)正好在我需要的时候找到了这个。谢谢你@DarkNeuron!幸运的东西:-)有什么变化吗?当我将它绑定到变量时,它会将值设置为索引的值
const printers = [{name: "Printer 1", id: 1}, {name: "Printer 2", id: 2}];