实体在 ui-router 解析和控制器之间以某种方式分离
entity gets detached somehow between ui-router resolve and the controller
我正在尝试拒绝对新添加实体的更改(期望 breeze 将 entityState 设置为分离)。大多数时候它有效,但偶尔(主要是在我已经执行实体创建和拒绝之后),rejectChanges 调用将失败,因为存在对 entityAspect.entityManager 属性.[= 的空引用。 14=]
我正在通过抽象 parent 状态下的 ui-router 的 "resolve" 获取我的实体实例。然后在抽象 parent 控制器中,我将该实例分配给 $scope。从那时起,我在构造函数中处理 $scope.myEntity 而不是已解析的变量。当我调用实体时,这是我的解析函数:
resolve:{
myEntity:function(sharedEntityManager,$stateParams, $q){
return $q.when(sharedEntityManager.getMyEntity($stateParams.entityId))
.then(function(myEntity){
if(!myEntity && myEntity.entityAspect.entityState.isDetached()){
$q.reject();
}
else
{
return myEntity;
}
});
}
}
然后在我的 parent 抽象控制器中,我称之为:
$scope.myEntity = myEntity;
显示空实体管理器的错误...
TypeError: Cannot read property 'isRejectingChanges' of null
at __using (breeze.debug.js:449)
at EntityAspect.proto.rejectChanges (breeze.debug.js:3687)
该错误似乎仅在我成功完成 1 个创建实体并拒绝该实体的循环后才会发生。然后,当我创建另一个新实体时,该新实体以某种方式从 "Added" 和具有 entityManager 到 "Detached" 和 null entityManager。我确认在 resolve 函数中,entityState 是 "Added",但在控制器构造函数中,从 ui-router 注入的实体现在是 "Detached".
有人熟悉这种行为吗?有解决办法吗?
您确定 then
函数中的测试吗?对我来说似乎不合适。你真的是说 if(!myEntity && ...
还是应该 if(!myEntity || ...)
我正在尝试拒绝对新添加实体的更改(期望 breeze 将 entityState 设置为分离)。大多数时候它有效,但偶尔(主要是在我已经执行实体创建和拒绝之后),rejectChanges 调用将失败,因为存在对 entityAspect.entityManager 属性.[= 的空引用。 14=]
我正在通过抽象 parent 状态下的 ui-router 的 "resolve" 获取我的实体实例。然后在抽象 parent 控制器中,我将该实例分配给 $scope。从那时起,我在构造函数中处理 $scope.myEntity 而不是已解析的变量。当我调用实体时,这是我的解析函数:
resolve:{
myEntity:function(sharedEntityManager,$stateParams, $q){
return $q.when(sharedEntityManager.getMyEntity($stateParams.entityId))
.then(function(myEntity){
if(!myEntity && myEntity.entityAspect.entityState.isDetached()){
$q.reject();
}
else
{
return myEntity;
}
});
}
}
然后在我的 parent 抽象控制器中,我称之为:
$scope.myEntity = myEntity;
显示空实体管理器的错误...
TypeError: Cannot read property 'isRejectingChanges' of null
at __using (breeze.debug.js:449)
at EntityAspect.proto.rejectChanges (breeze.debug.js:3687)
该错误似乎仅在我成功完成 1 个创建实体并拒绝该实体的循环后才会发生。然后,当我创建另一个新实体时,该新实体以某种方式从 "Added" 和具有 entityManager 到 "Detached" 和 null entityManager。我确认在 resolve 函数中,entityState 是 "Added",但在控制器构造函数中,从 ui-router 注入的实体现在是 "Detached".
有人熟悉这种行为吗?有解决办法吗?
您确定 then
函数中的测试吗?对我来说似乎不合适。你真的是说 if(!myEntity && ...
还是应该 if(!myEntity || ...)