更改下拉列值会导致:无法读取未定义的属性entityState

时间:2015-11-19 17:15:32

标签: angularjs breeze dropdown

我正在开发一个现有的AngularJS应用程序,我需要添加一个新视图。在新视图中,有一个下拉列表,每次更改值时都会触发此错误。下拉列表正确加载所有数据。只有在价值发生变化时才会出现问题。

bottom: 49%

这是错误:

<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

这是'context'对象。一切看起来都不错:

function setNpValue(context, rawAccessorFn)

该方法内部是错误发生的地方。

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

NewValue准确反映了我选择的新值(在本例中为“AL”),因此它不为空。但是,在下一行中,newValue.entityAspect未定义,因此newAspect最终也未定义。结果,当我们到达这一行时:

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

发生错误。

我可以发布整个控制器以查看下拉列表所在的位置,如果有帮助的话。但它似乎有点矫枉过正。寻找我能得到的任何帮助。我对Angular很新。

编辑/更新:

我以为我找到了解决方案。作为这个问题的解决方案:

Dropdown in AngularJS has Correct Text, but Wrong Value

我在下拉列表中添加了“track by state.code”。在尝试解决这个问题时,我删除了它。刷新后,此错误消失了。嗬!但我的快乐是短暂的。不久之后,错误又回来了。现在我又回到原点。

2 个答案:

答案 0 :(得分: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

所以现在我回来试图解决这个问题。

答案 1 :(得分:0)

当我将角度从1.3.x更新到1.4.x时,我也遇到了这个问题。当我转换回角度1.3.x时,它就消失了。我假设Breeze Angular Service中有一些东西被棱角分解并且还没有被微风固定。