javascript - 除非我进行 GET 调用,否则 angularjs 绑定(bind)不会显示

标签 javascript angularjs restangular

这是我的情况: 我的应用程序中有一个“编辑”屏幕。为了加载此屏幕,我通过 window.postMessage 事件传递一个对象。我正在编辑页面的 Controller 中监听此 postMessage 事件,并将传入的对象分配给我的作用域上名为“患者”的属性。然后,在编辑页面标记中,我使用 ng-repeat 绑定(bind)到我的“病人”对象上的数组。问题是,页面没有更新以显示收到的数据。
这是我的 Controller 中的事件处理程序代码的样子:

window.addEventListener("message", function(event) {
    if (event.data.view === 'edit') {
        $scope.patient = event.data.patient;
    }
});

以下是绑定(bind)到患者对象的标记:

<div ng-repeat="dataItem in patient.fields | filter:{display:true}">
    <div class="row" >
        <div class="col-xs-12">
            {{dataItem.displayName}}:
        </div>
    </div>
    <div class="row" >
        <div class="col-xs-12">
            <input type="text" style="width: 100%;" ng-model="dataItem.value" /><br />
        </div>
    </div>
</div>

数据正确加载,并且 $scope.patent 属性已完全填充,但屏幕未更新。但是,如果我使用 RESTAngular 添加一个简单的“GET”调用,甚至不使用调用的结果,页面就会正确更新。为什么会这样?我该怎么做才能更新页面而不进行毫无意义的 RESTAngular 调用?以下是与 RESTAngular 调用配合使用的代码:

window.addEventListener("message", function(event) {
    if (event.data.view === 'edit') {
        patient = PatientRestangular.one('patients', event.data.patientId);
        //this is a hack
        //the data will not load on the edit screen without a call to 'get()'
        patient.get().then(function(){
            $scope.patient = event.data.patient;
        });
    }
});

最佳答案

尝试$apply:

$scope.$apply(function(){
    $scope.patient = event.data.patient;
});

关于javascript - 除非我进行 GET 调用,否则 angularjs 绑定(bind)不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20219051/

相关文章:

Javascript - window.location.assign 不工作

javascript - 基本 vue.js 2 和 vue-resource http get 变量赋值

javascript - jQuery onclick 加载随机使用 firefox

javascript - 我的 $scope 变量中的元素不会显示

angularjs - AngularJS 中 ng-repeat 中的动态过滤器

php - CodeIgniter 没有收到 POST 数据

javascript - AngularJS + Restangular - 调用 .one() 和 .get() 结果是数组?

angularjs - 正确设置 Laravel 5 CSRF token 的 header

javascript - 如何像在移动Chrome中的YouTube上一样激活全屏

angularjs - angular-ui 引导 Accordion 指令的 header 中的复选框