2015-11-19 38 views
1

我正在處理一個現有的AngularJS應用程序,我需要添加一個新視圖。在新視圖中,每次更改值時都會有一個下拉菜單觸發此錯誤。下拉菜單正確加載所有數據。只有當價值改變時,纔會出現問題。更改下拉列表的結果是:無法讀取undefined的屬性entityState

<select class="form-control form-controls input-sm" ng-model="vm.retailer.state" ng-options="state.code as state.name for state in vm.states track by state.code"> 
    <option value="">-- Select a State --</option> 
</select> 

這裏的錯誤:

TypeError: Cannot read property 'entityState' of undefined 

鑽入堆棧跟蹤的第一行,錯誤發生在這裏:

https://localhost:44398/bower_components/breezejs/breeze.debug.js:5284:20 

正是這種方法中:

function setNpValue(context, rawAccessorFn) 

下面是'續ext'對象。這一切看起來不錯:

context: Object 
entityAspect: EntityAspect 
newValue: "AL" 
oldValue: null 
parent: Retailer__Model 
property: NavigationProperty 
propertyName: "state" 
__proto__: Object 

在方法的內部是錯誤發生的地方。

if (newValue != null) { 
    var newAspect = newValue.entityAspect; 
    if (entityManager) { 
     if (newAspect.entityState.isDetached()) { 
      if (!entityManager.isLoading) { 
       entityManager.attachEntity(newValue, EntityState.Added); 
      } 

NewValue準確地反映了我選擇的新值(在本例中爲「AL」),因此它不爲空。但是,在下一行中,newValue.entityAspect是未定義的,所以newAspect也最終未定義。因此,當我們到達此行時:

newAspect.entityState.isDetached() 

發生此錯誤。

我可以發佈整個控制器以查看下拉列表的存在位置,如果有幫助的話。但它似乎是矯枉過正。尋找任何幫助,我可以得到。我對Angular很新穎。

編輯/ UPDATE:

我想我已經找到了解決辦法。作爲解決這個問題:

Dropdown in AngularJS has Correct Text, but Wrong Value

我補充說:「通過state.code軌道」的下拉列表。在試圖解決這個問題時,我刪除了它。刷新後,此錯誤消失。嗬!但我的快樂是短暫的。不久之後,錯誤又回來了。現在我又回到原點了。

+0

你的vm.states數組和vm.retailer對象是如何被填充的?有沒有可能vm.retailer是一個期待state屬性爲實體的微風實體,但是你將它設置爲一個字符串? Breeze對於它實例化的實體非常聰明,所以我猜想問題出在某些對象分配的某處。 – Beartums

+0

是的,你在正確的軌道上。 newValue應該是一個對象,但它是一個字符串。我真的不知道爲什麼。我無法找到設置的位置。 –

回答

0

好的,我能解決這個問題。只有它創造了另一個。這裏的問題是我如何建立我的下拉:

<select class="form-control form-controls input-sm" ng-model="vm.retailer.state" ng-options="state.code as state.name for state in vm.states track by state.code"> 
    <option value="">-- Select a State --</option> 
</select> 

我把它改爲:

<select class="form-control form-controls input-sm" ng-model="vm.retailer.state" ng-options="state as state.name for state in vm.states"> 
    <option value="">-- Select a State --</option> 
</select> 

而這個錯誤就走開了。但事實是,我加入了做這種改變來解決我貼一下這裏的問題:

Dropdown in AngularJS has Correct Text, but Wrong Value

所以現在我回來試圖解決這個問題。

0

我碰到這個問題,以及當我從1.3.x更新到1.4.x的角度。當我轉換回角1.3.x時,它消失了。我認爲微風角度服務中存在一些被角度折斷的東西,但尚未被微風固定。