ng-change指令不能按预期工作

时间:2016-10-16 20:09:36

标签: angularjs select angularjs-ng-change

$scope.invoicename中,存储了每张发票的id,name和pdfmake发票数据。当用户选择发票名称时,应显示由所选pdfmake设计的pdf文档。这是我的选择

的html
 <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>

这里是调用函​​数和函数makeInvoice,它应该显示pdf文档。

    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>

问题是,当我选择一个值时,带有该值的pdf会在第二次选择后显示。例如,如果我有选项1,2,3和我选择选项2,那么只有在我选择1或3后才会显示该选项的pdfmake。如果有人可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

使用$scope.$apply使AngularJS框架了解范围变量的更改。

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

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