我正在开发一个现有的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”。在尝试解决这个问题时,我删除了它。刷新后,此错误消失了。嗬!但我的快乐是短暂的。不久之后,错误又回来了。现在我又回到原点。
答案 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中有一些东西被棱角分解并且还没有被微风固定。