Javascript 仅在$scope.$on()之后部分刷新视图

Javascript 仅在$scope.$on()之后部分刷新视图,javascript,angularjs,Javascript,Angularjs,在这个用于预填充表单的AngularJS控制器中,获取数据是由使用$broadcast和$on的事件触发的。但是,当数据更新时,视图中只有一些相应的字段得到更新 $scope.currentHouse = {}; $scope.$on('houseInfoLoad', function(event, data) { $scope.currentHouse = data.houseDetail; //does not refresh the view console.log($s

在这个用于预填充表单的AngularJS控制器中,获取数据是由使用$broadcast和$on的事件触发的。但是,当数据更新时,视图中只有一些相应的字段得到更新

$scope.currentHouse = {};
$scope.$on('houseInfoLoad', function(event, data) {

    $scope.currentHouse = data.houseDetail; //does not refresh the view
    console.log($scope.currentHouse); //output is correct
    
    //the next three calls refresh the corresponding fields in the view
    $scope.changeGarageRadioValue($scope.currentHouse.hasGarage);
    utils.setSelection($scope.houseKeywords, $scope.currentHouse.keyword.id);
    utils.setSelection($scope.houseTypes, $scope.currentHouse.type.id);     
    
});
changeGarageRadioValue本质上是按照它所说的做的,而utils.setSelectionlist,id将一个selected=true属性添加到具有id的列表元素中。这具有使用isteven设置select字段值的效果

该视图有几个绑定到$scope.currentHouse属性的文本字段,以及这些单选按钮和选择字段

结果是,文本字段有时不会得到更新,但选择和单选按钮会得到更新

以下是我尝试失败的地方:

在$timeout中包装所有内容; 在设置$scope.currentHouse后调用$scope.apply会抛出一个错误,表明我们已经在$apply中 将$scope.currentHouse的初始定义从{}更改为每个字段都设置为null的对象。 有人能看到我遗漏了什么,或者如何强制触发刷新吗

编辑:使用视图中的摘录:

文本字段:

<label>ADDITIONAL DESCRIPTION</label>
<div>
    <input type="text" ng-model="currentHouse.additionalDescription" class="input-mandatory" value=""/>
</div>
多选:

<label>TYPE</label>
<div>
    <div directive-id="houseType" multi-select input-model="houseTypes" output-model="currentHouse.type" button-label="text" item-label="text" selection-mode="single" default-label="Select" tick-property="selected" ></div>
</div>
单选按钮:

<div><label>HAS GARAGE</label></div>
<div>
    <div id="radiobuttonNo" ng-click="changeGarageRadioValue(false);">
        NO
    </div>
    <div id="radiobuttonYes" ng-click="changeGarageRadioValue(true);" class="active">
        YES
    </div>
</div>
根据Alok Singh的建议编辑2:

我尝试将data.houseDetail直接放入$scope.currentHouse.house而不是$scope.currentHouse,并相应地更改视图。仍然没有结果

$scope.currentHouse = data.houseDetail
您无法获取currentHouse的更新值,因为它是一个模型。 因此,更改上述代码,即

$scope.currentHouse.house = data.houseDetail

你能给我们看一下你的视图代码吗?我添加了一些摘录。实际视图有点复杂,它是一个模式窗口,因此从父视图调用控制器和视图。现在尝试一下,它现在不起作用,但它给了我有趣的结果。我会通知你的,谢谢。不幸的是结果还是一样。我会更新我的问题,提到我尝试过这个。