2016-02-08 77 views
0

我在angularjs中工作,基本上我想要做的是根據組織名稱預先填充下拉列表。現在,下面的代碼會預填充正確的值,但每當我去執行代碼時,它都不能引用列表中定義的屬性。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封裝在定義這些列表的控制器中,但那也行不通。任何幫助表示讚賞!

+0

我不相信你在使用'ng-options'的時候需要一個空的'option'標籤。 –

回答

0

該錯誤可能來自$ root.sessionObj或來自您的html的域。你有沒有在你的範圍內定義的那些?

+0

我這樣做。每當我刪除ifs,只有一個列表填充下拉菜單,它工作正常。但每當我投入if條件,如果抱怨。 @Scott Schwalbe – Samantha

0

想通了!原來這是由與清單完全無關的事情造成的。

0

很可能,未定義的'name'來自'$ root.sessionObj.name'而不是'domain.name'。

確保'$ root.sessionObj'不是未定義的。