Safari和IE中的EcmaScript错误

时间:2016-12-15 11:24:06

标签: javascript angularjs internet-explorer safari ecmascript-6

我开发了一个AngularJs应用程序。此应用程序在 Google Chrome Mozilla Firefox 中运行良好,但是当我在 Safari IE-11 中测试此应用程序时STRONG>。它在控制台中显示错误。

就像我在许多地方使用此代码打开引导模式

$modal.open({
    templateUrl: "dummyTemplate.html",
    controller: "DummyControllerName",
    controllerAs: "vm",
    windowClass: 'popupModal',
    size: 'sm',
    resolve: {
        dummyData: function(){ return object; }
    }
}).result.then(data => { 

});

enter image description here

其他代码段

$rootScope.$on("toastIt", (e, d) => { // <- It show error on this line in IE and Safari
    toaster.pop(d.type || 'success', d.title, d.text);
});

我知道这个问题的原因仅仅是因为EcmaScript支持。 Internet Explorer和Firefox不支持此功能。

任何人都可以建议我解决此问题的最佳方法是什么,并在Safari和IE中启用我的AngularJs应用程序的支持。

如果我选择修改代码格式的选项,那么有很多地方,这需要花费太多时间。还有其他更好的选择来解决它吗?

2 个答案:

答案 0 :(得分:2)

听起来你说你得到了一个错误,因为你在IE11中使用了箭头功能。事实上,IE11不支持箭头功能或ES2015及更高版本的各种其他部分。 (过去几个月中任何版本的Firefox 。)

解决方案是使用转换器(例如Babel将ES2015 +代码转换为ES5代码。您可以在构建步骤中执行此操作,并部署已转换的ES5兼容代码。

或者,当然,只使用目标浏览器支持的功能(例如,如果定位IE11,请不要使用箭头功能)。

答案 1 :(得分:0)

你的解析线缺少关闭} - 你有这个(删除的东西不相关):

$modal.open({
  ...
  resolve: {
    smudgedOut: function(){ return response.data
  }
})

应该是:

$modal.open({
  ...
  resolve: {
    smudgedOut: function() { return response.data; }
  }
})

至少,根据您在chrome dev工具中向我们展示的内容,这就是问题所在。