当前位置: 首页 > 面试题库 >

使用Angular操作内联样式在IE中不起作用

武骁
2023-03-14
问题内容

我想根据角度控制器中函数的返回值设置div的位置

以下内容在FireFox和chrome中可以正常运行,但在Internet
Explorer中会{{position($index)}}%被解释为文字字符串值,因此无效

<div ng-repeat="item in items" style="left:{{position($index)}}%"></div>

这是问题的示例:

var app = angular.module('app', []);

app.controller('controller', function($scope) {

    $scope.items=[1,2,3,4,5,6,7,8,9,10];

    $scope.position=function(i){
        var percent =[5,10,15,20,25,30,35,40,45,50,55,60,65,70];
        return percent[i+1];
    }
});

这是一个 小提琴 来演示

有没有人建议如何纠正?


问题答案:

您必须使用ng-
style
而不是style,否则某些浏览器IE{{}}在甚至angular都没有机会渲染它之前删除无效的style属性值(等的存在会使它无效)。使用ng- styleangular时,将计算表达式并向其添加内联样式属性。

<div ng-repeat="item in items" ng-style="{left: position($index) + '%'}"></div>

由于无论如何您都在计算位置,因此您也可以%从中添加position并发送。还要记住,在ng-
repeat中调用一个函数将在每个摘要周期调用该函数,因此您可能要注意不要在方法内部进行过多的密集操作。

 <div ng-repeat="item in items" ng-style="{left: position($index)}">{{item}}</div>

然后返回

  return percent[i+1] + "%";

演示版



 类似资料:
  • 问题内容: 在Material UI中,我想在按钮上设置borderRadius。传递属性似乎适用于,但不适用于。 对于,borderRadius应用于父对象(这是必需的),而不是自身(也是必需的) 这是Material UI中的错误吗?还是这种行为是故意的?如果需要,那么如何制作带有圆角的RaisedButton? 问题答案: 这是预期的行为,并在docs中这样说。作为记录,您永远不希望将道具传

  • 问题内容: 我动态加载CSS样式表(在jQuery的帮助下),如下所示: 这在Firefox和Google Chrome浏览器中工作正常,但在IE中则 不能 。 有什么帮助吗?谢谢 问题答案: IE处理完页面加载的所有样式后,添加另一种样式表的唯一可靠方法是 有关更多详细信息。

  • 问题内容: 由于某种原因,似乎响应JS无法正常工作。我正在IE 8中使用媒体查询来更改各种大小的监视器的背景图像。在IE 8中,没有背景,只有纯色。 代码如下: 媒体查询如下所示: 上面的代码在IE 8中无法工作是有原因的吗?我还应该尝试使用另一个JS来使IE 8 Media Queries工作吗? 注意:看来html5-shiv确实有效。我正在实时Web服务器上进行测试。 问题答案: 同样的问题

  • 问题内容: 我有以下功能 但是 在ie7中不起作用,那我该怎么办!我想将光标放在输入中! 谢谢 更新 很好的解决方案,谢谢,但是现在在opera中不起作用:( 问题答案: 对于IE,您需要使用settimeout函数,因为它很懒,例如: 对于opera,这可能会有所帮助:如何在opera文本框上的所需索引中设置焦点

  • 我有一些 在量角器中,我们搜索并找到元素,检查文本是否符合我们的期望,然后对该元素调用。测试在Chrome中运行良好,但在IE中就好像没有点击发生一样。破坏了测试。 IE 11是否支持点击

  • 问题内容: 我有以下文件: 注意:忽略d.getTime()调用…这些只是为了解决IE无法从AJAX调用加载新页面的问题,因为它的缓存方案过于激进。 基本上,当它在/ DOC处重新加载文件时,应该将当前样式表设置为/ CSS处的文件… DOC和CSS都在不断变化。 奇怪的是,在Chrome浏览器中效果很好。将DOC加载到“内容” div中,并将样式表设置为CSS,并将CSS应用于页面。我可以更改C