Breeze 实体在ui路由器解析和控制器之间以某种方式分离

Breeze 实体在ui路由器解析和控制器之间以某种方式分离,breeze,Breeze,我试图拒绝对新添加的实体所做的更改(希望breeze将entityState设置为Distached)。大多数情况下,rejectChanges调用都会工作,但偶尔(主要是在我已经执行实体创建和拒绝之后),rejectChanges调用会失败,因为对entityAspect.entityManager属性的引用为空 我通过抽象父状态上ui路由器的“解析”来获取实体实例。然后在抽象父控制器中,我将该实例分配给$scope。从那时起,我处理$scope.myEntity,而不是构造函数中的已解析变量

我试图拒绝对新添加的实体所做的更改(希望breeze将entityState设置为Distached)。大多数情况下,rejectChanges调用都会工作,但偶尔(主要是在我已经执行实体创建和拒绝之后),rejectChanges调用会失败,因为对entityAspect.entityManager属性的引用为空

我通过抽象父状态上ui路由器的“解析”来获取实体实例。然后在抽象父控制器中,我将该实例分配给$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;
          }
        });
    }
  }
然后在我的父抽象控制器中,我称之为:

$scope.myEntity = myEntity;
显示空entityManager时出现的错误

TypeError: Cannot read property 'isRejectingChanges' of null
at __using (breeze.debug.js:449)
at EntityAspect.proto.rejectChanges (breeze.debug.js:3687)
这个错误似乎只有在我成功地创建了一个实体并拒绝了该实体之后才会发生。然后,当我创建另一个新实体时,该新实体以某种方式从“添加”并具有entityManager变为“分离”并为空entityManager。我确认在resolve函数中,entityState是“添加的”,但在控制器构造函数中,从ui路由器注入的实体现在是“分离的”


任何熟悉此行为的人,是否有解决方法?

您确定
then
函数中的测试吗?对我来说,这似乎不对劲。你的意思是
if(!myEntity&&&…
还是
if(!myEntity | |…)

谢谢你说的对,我已经解决了这个问题。即使如此,拒绝调用也不会被命中。我发现实体从未在那里以分离状态得到解析,即使在控制器中它将被分离。我认为这与爱奥尼亚的视图缓存有关。当我禁用缓存时,事情开始按预期工作。