如何在分隔字符串和具有数据绑定的对象数组之间进行转换?
ng-list
将使用字符串数组。但是我有一个对象数组,我想在其中分隔文本属性,以便可以编辑数组中的文本。
适用于字符串数组:
$scope.arrayStrings = ["one", "two", "three"];
<textarea ng-model="arrayStrings" ng-list=" " ></textarea>
我怎样才能让它与对象一起工作:
$scope.arrayObjects = [{
text: "one",
selected: true
}, {
text: "two",
selected: true
}, {
text: "three",
selected: true
}];
<textarea ng-model="arrayObjects" ng-list=" | text" ></textarea>
这是 plunker 中的演示
我有一个可能的想法是在字符串数组上使用 ng-list,然后将其映射到对象数组。$watch
每当字符串数组更改时,使用 a更新对象数组。但是,这仍然不足,因为每次数组更新时它都会覆盖对象上的任何其他属性。(以前的 plunker 版本中的演示)
$scope.$watch('arrayStrings', function() {
$scope.arrayObjects = $scope.arrayStrings.map(function(s){
return {
text: s,
selected: true
}
});
})
更新:
ng-list
即使使用Krzysztof 的建议,使用时似乎仍然存在问题:
toString: function() { return s }
覆盖该toString
方法有助于最初显示的对象集,但是一旦您键入任何内容,就会ng-list
将对象集转换回字符串数组,因为此时toString
还没有发挥作用。
澄清我正在尝试做的事情。我真的想要一个对象列表,带有可编辑的标题,也可以选择。即使标题已更改或已添加项目,我也想保留选择。