0

多年来,我一直在摆弄自定义车把助手,例如:

Handlebars.registerHelper('markdowner', function (input) {

  var converter = new Showdown.converter({ extensions: 'tables' });

  return converter.makeHtml(input);

});

但我被抛出:

Uncaught TypeError: Cannot call method 'replace' of undefined 

尝试调用助手时来自 showdown.js。

我也尝试在 Meteor 加载时重新定义转换器,但它被忽略了 - 关于如何让摊牌转换器/扩展运行的任何想法将不胜感激。

4

1 回答 1

2

您需要以数组的形式提供扩展,还需要将该扩展称为“表”而不是“表”(基于 Showdown gitgub 存储库中的 table.js 文件,如下所示)。

var converter = new Showdown.converter({ extensions: ['table'] });

在遇到与您相同的错误后,我刚刚自己实现了这一点。

加载扩展后,您应该能够从控制台运行它并让它返回一些东西。

$ window.Showdown.extensions.table

要从控制台测试它是否正常工作,请尝试以下操作:

new Showdown.converter({extensions:['table']}).makeHtml("| A | B | C | \n |-|-|").htmlSafe()

应该输出

SafeString {string: "<table>↵&lt;thead>↵&lt;tr>↵&lt;th id="a" style="text-align:…C </th>↵&lt;/tr>↵&lt;/thead>↵↵<tbody>↵&lt;/tbody>↵&lt;/table>", toString: function}

参考

  1. table.js - https://raw.githubusercontent.com/coreyti/showdown/master/src/extensions/table.js
  2. 我在这里找到了数组参考:http ://www.sluse.com/view/20863978
于 2014-10-01T05:11:16.550 回答