angularjs 如何在数组为空时显示错误

w51jfk4q  于 12个月前  发布在  Angular
关注(0)|答案(2)|浏览(131)
Array = {
  0 : { NAME: 'A' , PET :'DOG' , AGE : 'NINE' },  
  1 : { NAME: 'B' , PET :'CAT' , AGE : 'TEN' },  
  2 : { NAME: 'C' , PET :'TURTLE' , AGE : '' }  
}

Html**:**

<option ng-repeat='data in array' value="data.NAME"> {{data.PET}} </option>

因此,如果选择第二个(索引)选项并单击保存按钮。我想显示一个错误,说年龄是空的。
我只能访问Name,因为value带有val(),PET带有text()in:selected
如果age为空,如何显示错误

utugiqy6

utugiqy61#

少数意见**:**

  • 你的Array变量不是一个数组,而是一个对象。
  • 应该更改ng-repeat语法以处理对象的对象。
<option ng-repeat="(key, value) in Array" value="value.NAME">
  {{value.PET}}
</option>

提交时,您可以根据此选定值(value.NAME)检查Array对象中的AGE字段值。
现场演示**:**

const obj = {
    0 : { NAME: 'A' , PET :'DOG' , AGE : 'NINE' },
    1 : { NAME: 'B' , PET :'CAT' , AGE : 'TEN' },
    2 : { NAME: 'C' , PET :'TURTLE' , AGE : '' }
}

const selectedValue = 'C';

Object.keys(obj).forEach(key => {
    Object.keys(obj[key]).forEach(innerObjKey => {
    if (innerObjKey === 'NAME' && obj[key][innerObjKey] === selectedValue) {
        !obj[key].AGE ? console.log('Age not found!') : console.log('Age found!')
    }
  })
})
ia2d9nvy

ia2d9nvy2#

您可以使用array .find() method通过NAME搜索正确的对象,然后检查此对象的AGE值(如果存在):

let searchedObj = Object.values(obj).find(o => o['NAME'] === selectedValue);

if(searchedObj !== null && !searchedObj['AGE']){
      console.log('Age is empty!');
}

Demo:

const obj = {
    0 : { NAME: 'A' , PET :'DOG' , AGE : 'NINE' },
    1 : { NAME: 'B' , PET :'CAT' , AGE : 'TEN' },
    2 : { NAME: 'C' , PET :'TURTLE' , AGE : '' }
}

const selectedValue = 'C';

let searchedObj = Object.values(obj).find(o => o['NAME'] === selectedValue);

if(searchedObj !== null && !searchedObj['AGE']){
      console.log('Age is empty!');
}

注:

确保将ng-repeat安排为处理objects而不是array,因为这里有一个object数据。

相关问题