【问题标题】:Using PivotTable.js with aurelia and asp.net core将 PivotTable.js 与 aurelia 和 asp.net 核心一起使用
【发布时间】:2018-07-17 06:25:23
【问题描述】:

我的项目是基于 ASP.Net Core 和 aurelia 设置的,如 Rob Eisenberg https://channel9.msdn.com/Events/Build/2017/T6032 的这段视频中所示

现在我正在尝试使用 PivotTable.js 插件。 它有一个示例函数:

$(function () {
  $("#output").pivot(
    [
      { color: "blue", shape: "circle" },
      { color: "red", shape: "triangle" }
    ],
    {
      rows: ["color"],
      cols: ["shape"]
    }
  );
});

我首先在一个带有内联脚本标签的简单 html 页面中尝试了它,它运行良好。 在 aurelia 项目中,我将它包装在一个 load() 函数中,该函数在单击按钮时触发:

//playground.html
<button id="btn1" click.trigger="load()">Load</button>
<div id="output"></div>

............

//playground.ts
import $ from 'jquery'

export class Playground {
   load() {
    $(function () {
        $('#output').pivot(
    ...
   }
 }

我用 npm 安装了它,现在看起来我在正确引用它时遇到了问题。我直接在我的视图模型的脚本标签中进行了测试

     <script type="text/javascript" src="pivot.js"></script> 

它不断抛出“pivot is not a function”错误,如下所示:

    jQuery.Deferred exception: __WEBPACK_IMPORTED_MODULE_0_jquery___default(...)(...).pivot is not a function app/components/play/playground/Playground.prototype.load/<@http://localhost:63822/dist/app.js?v=Co4Zys-nKtxDfRHuYeQtAcAzgXG9rRHqPqkwN0CzgJQ:27236:13

   mightThrow@http://localhost:63822    /dist/vendor.js?v=8kh55HdjmafGVyQfWaHURccoz4Vi-HAb9obSOc7CDCk:14851:21

     resolve/</process<@http://localhost:63822/dist/vendor.js?v=8kh55HdjmafGVyQfWaHURccoz4Vi-HAb9obSOc7CDCk:14919:12

     undefined
    vendor.js:15128:3
    TypeError: __WEBPACK_IMPORTED_MODULE_0_jquery___default(...)(...).pivot is not a function      

我的 Index.cshtml 似乎在 dist 文件夹中查找脚本,因此我将 pivot.js 文件移动到 dist 并在那里添加了脚本标签

<script type="text/javascript" src="~/dist/pivot.js"></script>
<script type="text/javascript" src="~/dist/pivot.min.js"></script>

我在package.json 中添加了jqueryjquery-ui 作为依赖项和devdependencies(我确实怀疑这是否是正确的做法):

    "devDependencies": {
          "jquery": "^3.2.1",
          "jquery-ui": "^1.12.1"
          ....
     },
      "dependencies": [
       { "jquery": "^3.2.1" },
       { "jquery-ui": "^1.12.1" } 
      ]

还添加了一个 jquery 作为 webpack.config.js 的插件,正如其他插件的建议一样。

       plugins: [
        new webpack.ProvidePlugin({
            $: 'jquery',
            jQuery: 'jquery'
        })

我尝试在我的视图模型的脚本标签中添加指向jquery 的cdn 链接。这些更改都没有更改错误消息。我应该如何引用这个和类似的jquery 插件?

【问题讨论】:

    标签: javascript jquery asp.net-core aurelia pivottable.js


    【解决方案1】:

    我为使 pivottable.js 与 webpack 和 Aurelia 一起工作而奋斗了一段时间。您将需要以下 NPM 包:

    jquery
    jquery-ui-dist
    pivottable
    

    “正常”的 jquery-ui 包对我不起作用。

    在您的打字稿文件中,使用以下导入:

    import * as $ from 'jquery';
    import 'jquery-ui-dist/jquery-ui';
    import 'pivottable';
    

    然后您可以使用$('#output').pivotUI(...) 函数。在您的模板 HTML 文件中,您需要导入 CSS:

    <require from="pivottable/dist/pivot.css"></require>
    

    使用此设置和相同的 ProvidePlugin 代码,我可以在 webpack 中使用 pivottable.js,而无需额外的 script 标签。

    【讨论】:

    • 对我来说,是 'webpack-jquery-ui' 起作用了。所以我没有尝试jquery-ui-dist。其他人可能会从中受益。
    【解决方案2】:

    您可能应该添加一个导入语句
    import 'pivottable';
    jquery导入后 如果 npm 包是正确的,应该这样做。

    这更像是一个 webpack 问题,而不是 aurelia。 谷歌搜索“webpack jquery pivottable”应该会给你更多答案。

    【讨论】:

    • 在将 "pivottable": "^2.19.0" 添加到 devDependencies 到 package.json 并按照您的建议导入数据透视表后,我得到了纯只读文本的输出,而不是交互式的,如示例中所示.pivot() 函数。当我导入“import 'jquery-ui' 并使用 .pivotUI 函数时,我得到“在没有太多描述的情况下渲染可透视表 UI 时发生错误。我将 import $ from 'jquery' 替换为 import $ from 'jquery-ui',这引发了错误:TypeError: name.split is not a function
    • 看起来纯文本没有正确导入 css。我可以使用 参考来让它工作,现在这很好,尽管稍后我会尝试通过导入来加载它。关于 pivotUI,即使通过
    • jquery UI 依赖于 $ 是一个全局的,我猜.. 首先你可以尝试添加 jquery 和 jquery ui 作为
    • 我的代码中有太多对 jquery-ui 的引用,同时试图让它工作。我开始删除它们,在某个时候,它开始为我工作。目前我在 package.json 的 devdependencies 中有“webpack-jquery-ui”并导入“pivottable/pivot.min.js”。我还发现我必须按原样使用 pivot.js 代码,而无需进行更改,因为每次 npm 重新加载时它都会从源刷新,但是我可以在本地加载它的 css 并对其进行编辑。虽然我不知道确切的步骤,但您的建议确实帮助我走得更远。
    • 自以为是的旧库很难与任何东西集成。很高兴听到您畅通无阻。加入 aurelia 的论坛discourse.aurelia.io 与社区保持联系
    猜你喜欢
    • 1970-01-01
    • 2017-12-27
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多