ng-change 指令没有按预期工作

ng-change directive doesn't work as expected

$scope.invoicename 中存储了发票的数据,其中包含每张发票的 ID、名称和 pdfmake。当用户 select 发票名称时,它应该显示由 selected pdfmake 设计的 pdf 文档。这是我的 html select

 <select class="form-control"  ng-change="zafakturu(dizajn.pdfmake)" ng-model="dizajn.pdfmake">
     <option value={{dizajn.pdfmake}} ng-repeat="dizajn in invoicename" selected="selected">{{dizajn.name}}</option>
 </select>

这里是更改时调用的函数和应显示 pdf 文档的函数 makeInvoice。

    var makeInvoice = function(doc){

        pdfMake.createPdf(doc).getDataUrl(function(dataURL) {
            $scope.fajll= dataURL;
        });
        console.log(doc);
    };

    $scope.zafakturu = function (pdf){
        $scope.docDefinition = eval("(" + pdf + ")");
        makeInvoice($scope.docDefinition);
    };

这是显示 pdf 的 html 元素。

 <object ng-show="fajll" data="{{fajll}}" type="application/pdf" style="width: 100%; height: 400px;"></object>

问题是,当我 select 一个值时,具有该值的 pdf 显示在第二个 selection 之后。例如,如果我有选项 1、2、3,并且我 select 选项 2,则该选项的 pdfmake 将仅在我 select 1 或 3 之后显示。如果有人可以帮忙?

使用 $scope.$apply 让 AngularJS 框架知道作用域变量的变化。

    pdfMake.createPdf(doc).getDataUrl(function(dataURL) {
        $scope.fajll= dataURL;
        $scope.$apply();
    });

作为 .getDataURl 方法参数提供的函数正在 AngularJS 框架之外异步执行。 object 元素的 data 属性仅在摘要循环后更新。 $scope.$apply 创建必要的摘要循环。