Директива ng-change не работает должным образом

In $scope.invoicenameхранятся <select class = "form-control" ng-change = "zafakturu (dizajn.pdfmake)" ng-model = "dizajn.pdfmake" > < значение опции = {{dizajn.pdfmake}} ng-repeat = " dizajn in invoicename " selected = " selected " > {{dizajn.name}} </ option> </ select> для счетов-фактур с идентификатором, именем и pdfmake для каждого счета-фактуры. Когда пользователь выбирает имя счета-фактуры, он должен отображать pdf-документ, созданный выбранным pdfmake. Это мой html для выбора

    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);
    };

И вот функция, называемая изменением и функцией makeInvoice, которая должна отображать pdf-документ.

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

И вот элемент html, который отображает pdf.

$scope.$apply

Проблема в том, что, когда я выбираю одно значение, PDF с этим значением отображается после второго выбора. Например, если у меня есть опции 1, 2, 3, и я выбираю вариант 2, формат pdfmake для этого параметра будет отображаться только после того, как я выберет 1 или 3. Если кто-нибудь может помочь?

angularjs,select,angularjs-ng-change,

0

Ответов: 1


0 принят

Используйте, чтобы рама AngularJS знала об изменениях в переменной области. pdfMake.createPdf(doc).getDataUrl(function(dataURL) { $scope.fajll= dataURL; $scope.$apply(); });

.getDataURl

Функция, представленная в качестве аргумента для dataметода, выполняется асинхронно вне рамки AngularJS. dataАтрибут элемента объекта только обновляется после цикла дайджеста. $scope.$applyсоздает необходимый цикл дайджеста.

angularjs, select, angularjs-of-change,
Похожие вопросы