angular-formly 自定义签名板模板

angular-formly custom template for signature pad

所以我正在尝试为 angular-formly librarythat uses the signature pad directive 编写自定义模板作为字段。我已经能够使用基本模板方法来显示签名板:

app.run(function(formlyConfig) {
    formlyConfig.setType({
        name: 'signaturePad',
        template: '<signature-pad accept="accept" clear="clear"' +
            'height="220" width="568"></signature-pad>' +
            '<button ng-click="clear()">Clear signature</button>' +
            '<button ng-click="signature = accept()">Sign</button>'
    });
});

但是,我遇到的问题是在主控制器的范围内无法访问单击“接受”按钮后接受 return 值的 signature 变量。

也许更清晰的问题版本是:

 app.run(function(formlyConfig) {
    formlyConfig.setType({
        name: 'helloWorldButton',
        template: '<button ng-click="vm.clicked()">Sign</button>'
    });
});

如何访问应用程序控制器中的函数 vm.clicked()。表单本身在 ng-controller 范围内声明:

<div ng-controller="controllerName as ctrl">    
    <form ng-submit="ctrl.onSubmit()">
        <formly-form model="ctrl.userData" fields="ctrl.userFields">
            <button type="ctrl.submit">Submit</button>
        </formly-form>
    </form>
</div>

对于所有相关人员,我设法想出了一种不同的方法来实现它。

app.run(function(formlyConfig) {
    formlyConfig.setType({
        name: 'signaturePad',
        template: '<button ng-click="openSigPad()">Sign</button>',
        controller: function($scope, $uibModal) {
            ...
            $scope.openSigPad = $uibModal.open(...);
            .then(function(result) {
                $scope.model[$scope.options.key] = result;
            });
        }
    });
});

这样,我使用 UI Bootstrap 创建了一个模态,在其中显示任何必要的信息,然后 return 模态结果返回到字段本身的模型。效果很好。