javascript - UWP - Angular 集成

标签 javascript angular uwp

最近我一直在尝试将 Google 的 Angular 5 构建集成到 Visual Studio 中基于 JavaScript 的通用 Windows 应用程序项目中,不幸的是没有取得太大的成功。大多数情况下无法在已编译的 Angular JavaScript 代码和我想使用 UWP 命名空间的 JavaScript 文件之间实现有效通信。

我当前的文件夹结构如下所示: folder structure

前端显示得很好,尽管如前所述,我很难弄清楚如何将它与负责处理 IO 操作的代码(位于 main.js 中)集成。我认为使用已经编译的 Angular 项目是不可能的,因此我的问题是 - 我如何从 Angular 组件中做到这一点?

最佳答案

我对“编译的 Angular”部分有点困惑,但如果你在 UWP 项目中有一个 Angular 应用程序,大部分 UWP API 都可以通过 Windows 命名空间访问,一些来自WinJS,因此在 Angular 服务/组件中,您可以创建如下函数:

windowsFileSavePicker(source, successCB, errorCB) {
    var savePicker = Windows.Storage.Pickers.FileSavePicker();
    //savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.downloads;
    savePicker.fileTypeChoices.insert(source.mimeType, [source.fileName.replace(/^.*([.][^.]*)$/, '$1')]);
    savePicker.suggestedFileName = source.fileName;

    savePickerHandler = fileSavePickerHandler.bind(undefined, source, successCB, errorCB);

    if (platform.isWindowsPhone()) { // Win 8.1
        Windows.UI.WebUI.WebUIApplication.addEventListener("activated", savePickerHandler);
        savePicker.pickSaveFileAndContinue();
    }
    else // UWP
        savePicker.pickSaveFileAsync().then(savePickerHandler);
}

在几个 Cordova 应用程序中,我使用了这样的片段(例如,从 Angular 的 main.js 内部):

if (window.WinJS && window.WinJS.Application) {
    window.WinJS.Application.onbackclick = function () {
        backButtonBehavior();
        return true; // return true to prevent app closing
    };
}

这可能有助于在浏览器(或任何没有 UWP API 的地方)中测试应用的 Angular 部分。

我从来不需要从 Angular 应用程序内部“通信”到应用程序的外部 UWP 部分(因为我在 Angular 应用程序内部执行所有操作),但您可以创建一个界面或“运输” UWP 部分中的对象,将其附加到全局命名空间(window;或者也许有一个 UWP api 用于此?),然后通过全局命名空间从 Angular 应用程序内部访问它。

关于javascript - UWP - Angular 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48711617/

相关文章:

c# - Windows 10 UWP 中的视觉状态管理器未在页面加载时应用初始状态

c# - 移动模拟器 Windows 10 的 SQLite UWP 错误

c# - 通过 INotifyPropertyChanged 更新 ListView 的 ItemsSource

javascript - ASP.Net MVC 禁用浏览器缓存 (firefox)

angular - 如何在 Angular2 Outlook 插件中使用插件命令

javascript - 面向对象的Javascript

angular - 将 Angular 6 应用程序升级到 Angular 8 时加载 scss 时出现错误

javascript - 如何跳过 CSV 中的第一行项目?

javascript - 一次提交多个表单将中止所有表单提交,最后一个表单除外

javascript - $(document).ready() 似乎不适用于 Internet Explorer。我怎样才能解决这个问题?