Angularjs 计算不适用于 iPad / iPhone 上的 safari

Posted

技术标签:

【中文标题】Angularjs 计算不适用于 iPad / iPhone 上的 safari【英文标题】:Angularjs calculation not working on safari on iPad / iPhone 【发布时间】:2017-09-26 22:02:58 【问题描述】:

我在 AngularJS 中有一个计算成本的计算方法。除了 iPad 和 iPhone 上的 Safari 之外,它在所有浏览器(我已经测试过)中都能正常工作。

计算如下:

£  ((((((((height * width) / 1000000) * square_meter_price) + panel_price) * 1)) * (1 + (lookup.dl_markup-0) + (Colours.options.markup-0))) + (lookup.dl_extra_cost-0) + (Colours.options.extra_cost-0) + (hingeholesno * hinge_hole_price)) * panel_quantity | number : 2 

在 iPad / iPhone 上的 safari 上显示上述代码而不是成本(总体计算)

任何关于如何解决这个问题的想法都将不胜感激,因为我已经搜索了几个小时,没有任何乐趣。

【问题讨论】:

不好意思问了个不相关的问题,但是你为什么会有这样的表达方式呢?这对于计算机也是不可读的。那你为什么要把第一个成员乘以 1 * 1 ? 它可以正常工作和计算 - 只是 iPad / iPhone 上的 safari 中没有。 “它有效”不是答案。事情不仅要起作用,而且要有意义。第一次看,乘以 1 对我来说没有多大意义。然后拆分此计算,您可以更轻松地调试问题,并且可以对它进行单元测试,如果您将代码移动到控制器内而不是 html 中的内联 完全同意 quirimmo,而且我已经看到很多东西在一个浏览器中而不是在另一个浏览器中工作,就在今天我发布了一个答案,其中 Safari 和 FF 无法正确显示图表数据,但 Chrome工作得很好。而且您谈论的不仅仅是浏览器。 我建议将该计算移到控制器/组件中并将结果变量绑定到视图中 【参考方案1】:

我通过在控制器中使用 $watch 解决了这个问题:

    $scope.$watch('((((((((height * width) / 1000000) * square_meter_price) + panel_price) * 1)) * (1 + (lookup.dl_markup-0) + (Colours.options.markup-0))) + (lookup.dl_extra_cost-0) + (Colours.options.extra_cost-0) + (hingeholesno * hinge_hole_price)) * panel_quantity | number : 2', function(fc) $scope.FullCost = fc;);

然后在 HTML 中使用 FullCost - 它现在可以在所有设备上工作并显示

【讨论】:

以上是关于Angularjs 计算不适用于 iPad / iPhone 上的 safari的主要内容,如果未能解决你的问题,请参考以下文章

jquery 下载图像(数据:图像)链接不适用于 Ipad,但在窗口中工作正常

AngularJS + 样式不适用于字段

getCurrentPosition 不适用于 angularjs

screenShot代码不适用于ipad,适用于iphone

AngularJS 不适用于 MVC 局部视图

获取月份功能不适用于 iPad