我正在處理一個現有的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軌道」的下拉列表。在試圖解決這個問題時,我刪除了它。刷新後,此錯誤消失。嗬!但我的快樂是短暫的。不久之後,錯誤又回來了。現在我又回到原點了。
你的vm.states數組和vm.retailer對象是如何被填充的?有沒有可能vm.retailer是一個期待state屬性爲實體的微風實體,但是你將它設置爲一個字符串? Breeze對於它實例化的實體非常聰明,所以我猜想問題出在某些對象分配的某處。 – Beartums
是的,你在正確的軌道上。 newValue應該是一個對象,但它是一個字符串。我真的不知道爲什麼。我無法找到設置的位置。 –