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 - 在视图中的列表之间进行选择的主要内容,如果未能解决你的问题,请参考以下文章