如何将文件选择器添加到 angularjs 模板

How to add filepicker to angularjs template

我构建了一个需要动态更改模板的应用程序。

<div ng-include="templateUrl"></div>

我有两个模板,例如 addtext.htmladdmedia.html。我使用 angularjs 动态更改它。但是在我的 addmedia.html 模板中,我有文件选择器的选择文件小部件。

<input type="filepicker" data-fp-apikey="..." data-fp-mimetypes="*/*" data-fp-container="modal" onchange="save_url()">

选择小部件未加载到模板中。有什么办法让它工作吗?

嗯,我对 filepicker.io 了解不多,但据我了解,问题在于小部件是在页面加载时构建的。这意味着当您切换模板时,filepicker 可能不会自动处理它们,请参阅 documentation:

We'll automatically convert any widgets that you have on page load. However, if you want to create widgets once the page has loaded, you can... call filepicker.constructWidget(); method.

所以,我会建议你一个简单的指令,只需将 input 标记与 type=filepicker 一起放置,然后使用前面提到的方法将文件选择器链接到它,如下所示:

app.directive('myFilepicker', [function() {
    return {        
        transclude: true,
        restrict: "E",    
        template: '<input type="filepicker">',
        replace: 'true',
        link: function(scope, element) {
            filepicker.constructWidget(element);
        }
    };
}]);

在您的标记中,您可以像这样使用它:

<my-filepicker data-fp-apikey="..." data-fp-mimetypes="*/*" data-fp-container="modal" onchange="save_url()"></my-filepicker>

看到这个demo。我没有 filepicker.io API 密钥,但我希望这会起作用。