';或'';和';在ng模型中,angularjs

';或'';和';在ng模型中,angularjs,angularjs,Angularjs,我有一个项目列表,其中一些有属性值,一些有属性默认值。我需要用ng repeat将其绑定到输入[text]中。 数组如下所示: $scope.arr = [ {value:'name'}, {value:'dog'}, {default:'cat'}, {value:'lastName'}, {default:'ring'} ]; 和html格式: <div ng-repeat='item in arr'> <input type='text' ng-mode

我有一个项目列表,其中一些有属性值,一些有属性默认值。我需要用ng repeat将其绑定到输入[text]中。
数组如下所示:

$scope.arr = [
 {value:'name'},
 {value:'dog'},
 {default:'cat'},
 {value:'lastName'},
 {default:'ring'}
];  
和html格式:

<div ng-repeat='item in arr'>
 <input type='text' ng-model='item.value || item.default'>
</div>

它可以工作,但控制台中有错误消息“[ngModel:nonassign]”。因为ng模型不适用于表达式。。 也许还有别的办法可以解决这个问题


您可以这样做:

<div ng-repeat='item in arr'>
   <input type='text' ng-hide='item.default' ng-model='item.value'>
   <input type='text' ng-show='item.default' ng-model='item.default'>
</div>


.

您可以这样做:

<div ng-repeat='item in arr'>
   <input type='text' ng-hide='item.default' ng-model='item.value'>
   <input type='text' ng-show='item.default' ng-model='item.default'>
</div>


.

您可以尝试创建第二个数组,仅使用单一类型的对象并将其绑定到视图。 然后,您可以监视更改并将值重新分配给原始数组。
它更像是一种MVVM方法(创建“视图模型”),介于控制器模型和视图之间

您可以尝试创建第二个数组,仅使用单一类型的对象并将其绑定到视图。 然后,您可以监视更改并将值重新分配给原始数组。
它更像是一种MVVM方法(创建“视图模型”),介于控制器模型和视图之间

$scope.valueOrDefault=函数(项){
返回item.value | | item.default;
}

和HTML


$scope.valueOrDefault=函数(项目){
返回item.value | | item.default;
}

和HTML



谢谢!这是个好主意,但当value=''(空)时,ng show将隐藏此字段。因此,也许我需要进行一些检查,如
ng show='fieldCheck(item)
,和
$scope.fieldCheck=function(item){if('value'在item中)return true}
-例如..@YoroDiallo等一下,您是否有兴趣显示这两个字段?您期望的最终结果是什么?是的,我需要将所有对象粘贴到输入中。数组中的每个对象都有default或value属性,它可以是空的,也可以有一些值,但我需要在input中绑定它。。因此,当
value=''
我可以从输入中填充它(在输入中写入一些内容)时,我不确定我是否理解您试图做的事情。如果您希望有两个输入字段,一个作为默认值,另一个作为默认值,那么只需删除
ng show
。如果你想显示一个或另一个填充的,那么我的答案的解决方案。啊,好的。现在我明白了。我会马上更新我的答案。谢谢!这是个好主意,但当value=''(空)时,ng show将隐藏此字段。因此,也许我需要进行一些检查,如
ng show='fieldCheck(item)
,和
$scope.fieldCheck=function(item){if('value'在item中)return true}
-例如..@YoroDiallo等一下,您是否有兴趣显示这两个字段?您期望的最终结果是什么?是的,我需要将所有对象粘贴到输入中。数组中的每个对象都有default或value属性,它可以是空的,也可以有一些值,但我需要在input中绑定它。。因此,当
value=''
我可以从输入中填充它(在输入中写入一些内容)时,我不确定我是否理解您试图做的事情。如果您希望有两个输入字段,一个作为默认值,另一个作为默认值,那么只需删除
ng show
。如果你想显示一个或另一个填充的,那么我的答案的解决方案。啊,好的。现在我明白了。我会快速更新我刚才的答案。