';或'';和';在ng模型中,angularjs
我有一个项目列表,其中一些有属性值,一些有属性默认值。我需要用ng repeat将其绑定到输入[text]中。';或'';和';在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
数组如下所示:
$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
。如果你想显示一个或另一个填充的,那么我的答案的解决方案。啊,好的。现在我明白了。我会快速更新我刚才的答案。