AngularJS - 在视图中的列表之间进行选择

Posted

技术标签:

【中文标题】AngularJS - 在视图中的列表之间进行选择【英文标题】:AngularJS - choosing between lists in view 【发布时间】:2016-02-08 21:50:34 【问题描述】:

我在 angularjs 工作,基本上我要做的是根据组织名称预先填充一个下拉列表。现在,以下代码确实预填充了正确的值,但是每当我执行代码时,它都无法引用列表中定义的属性。

我在控制器中定义了两个列表:

listOne = [name : 'NameOne', id : 'IdOne'];
listTwo = [name : 'NameTwo', id : 'NameTwo']; 

(这些列表中还有更多项目......但只是为了让你明白这一点)

在我看来,我有以下几点:

<div ng-if="$root.sessionObj.name.org != 'OrgName'">
    <select name="domain" id = "domain" class="form-control"
         required="true"
         ng-options="domain as domain.name for domain in listOne"
         ng-model="selectedDomain">
         <option value=""/>
     </select>
</div>
<div ng-if="$root.sessionObj.name.org=='OrgName'">
     <select name="domain id="domain" class="form-control"
         required="true"
         ng-options="domain as domain.name for domain in listTwo"
         ng-model="selectedDomain">
         <option value="" />
     </select>
</div>

每当我去执行我的代码时,我都会不断收到一个类型错误,指出“无法获取未定义或空引用的属性'名称'。有谁知道我可能做错了什么?我尝试了很多不同的事情,包括将我的 div 包装在定义这些列表的控制器中,但这也不起作用。感谢任何帮助!

【问题讨论】:

我不相信你在使用ng-options时需要一个空的option标签 【参考方案1】:

该错误可能来自 $root.sessionObj 或来自您的 html 的域。您的范围中是否同时定义了这两个?

【讨论】:

我愿意。每当我删除 ifs 并且只有一个列表填充下拉列表时,它都可以正常工作。但是每当我提出 if 条件时,如果抱怨。 @Scott Schwalbe【参考方案2】:

想通了!原来它是由与列表完全无关的东西引起的。

【讨论】:

【参考方案3】:

很可能,未定义的“名称”来自“$root.sessionObj.name”,而不是来自“domain.name”。

确保“$root.sessionObj”不是未定义的。

【讨论】:

以上是关于AngularJS - 在视图中的列表之间进行选择的主要内容,如果未能解决你的问题,请参考以下文章

第二章:2.1 AngularJS 中的数据绑定

使用 Web API 和 AngularJS 保存表单数据(选择列表)

使用 AngularJS 的多个视图中的相同数据

使用Angularjs重新排序html表中的列

如何在Android中的主/细分片段之间进行适当的导航?

AngularJS:加载下拉列表从模型中选择