在$scope.invoicename
中,存储了每张发票的id,name和pdfmake发票数据。当用户选择发票名称时,应显示由所选pdfmake设计的pdf文档。这是我的选择
<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。如果有人可以提供帮助吗?
答案 0 :(得分:0)
使用$scope.$apply
使AngularJS框架了解范围变量的更改。
pdfMake.createPdf(doc).getDataUrl(function(dataURL) {
$scope.fajll= dataURL;
$scope.$apply();
});
作为.getDataURl
方法的参数提供的函数正在AngularJS框架之外异步执行。对象元素的data
属性仅在摘要周期后更新。 $scope.$apply
创建了必要的摘要周期。