首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >angularjs设置背景-图像

angularjs设置背景-图像
EN

Stack Overflow用户
提问于 2016-03-06 23:08:46
回答 2查看 282关注 0票数 0

我有一个div来可视化进度。

因此,我有这个ng风格的定义:

代码语言:javascript
复制
ng-style="{'background-image':'linear-gradient(left, rgba(255,0,0,1)'+bufferProgressPercent!=='NaN'?bufferProgressPercent:0+'%,rgba(0,0,0,0)'+(bufferProgressPercent!=='NaN'?bufferProgressPercent:0)+'%)!important'};"


//output in developer-tools
    <div class="audio-controls-wrapper" ng-style="{'backgroundImage':'linear-    gradient(left, rgba(255,0,0,1)'+bufferProgressPercent!=='NaN'?    bufferProgressPercent:0+'%,rgba(0,0,0,0)'+(bufferProgressPercent!=='NaN'?    bufferProgressPercent:0)+'%)'};">

文档仅以明文形式显示。这些值不会被渲染。

值是正确的:

代码语言:javascript
复制
{{'background-image:linear-gradient(left, rgba(255,0,0,1)'+  (bufferProgressPercent!=='NaN'?bufferProgressPercent:0)+'%,rgba(0,0,0,0)'+(bufferProgressPercent!=='NaN'?bufferProgressPercent:0)+'%)'}}

给出了这个:

代码语言:javascript
复制
background-image:linear-gradient(left, rgba(255,0,0,1)59%,rgba(0,0,0,0)59%)

另一个尝试是创建一个指令:

代码语言:javascript
复制
<div class="audio-controls-wrapper" progress-animation="bufferProgressPercent" >

指令:

代码语言:javascript
复制
scope.$watch('progressAnimation', function(current, old){
    if(angular.isDefined(current) && current !== old){
      var backgroundImage = 'linear-gradient(left, rgba(255,0,0,1)'+   (current!=='NaN'?current:0)+'%,rgba(0,0,0,0)'+(current!=='NaN'?  current:0)+'%)!important';
      //scope.$applyAsync(function(){
        //element.css({'backgroundImage':backgroundImage});
        element[0].style.backgroundImage = backgroundImage;

       $compile(element.contents())(scope);
      //});
      console.log(backgroundImage)
      console.log(element[0].style)
    }
  });

但是这个元素的属性backgroundImage从未设置过。

EN

回答 2

Stack Overflow用户

发布于 2016-03-07 00:24:37

您是否在指令中输入了watch函数?

例如

代码语言:javascript
复制
 .directive('progressAnimation', function () {
return {
    restrict: 'A', //E = element, A = attribute, C = class, M = comment         
    scope: { // input the var that you want to watch
            },

    link: function ($scope, element, attrs) { 
 //put your watch function here
          if(angular.isDefined(current) && current !== old){
          var backgroundImage = 'linear-gradient(left, rgba(255,0,0,1)'+   (current!=='NaN'?current:0)+'%,rgba(0,0,0,0)'+(current!=='NaN'?  current:0)+'%)!important';

         element[0].style.backgroundImage = backgroundImage;

           $compile(element.contents())(scope);

          console.log(backgroundImage)
          console.log(element[0].style)
        }

       } //DOM manipulation
}
});
票数 2
EN

Stack Overflow用户

发布于 2016-03-08 05:33:46

要在中设置背景,我必须使用

代码语言:javascript
复制
background

而不是

代码语言:javascript
复制
background-image

更进一步,我不得不替换

代码语言:javascript
复制
linear-gradient(...

使用

代码语言:javascript
复制
-moz-linear-gradient(

这意味着

代码语言:javascript
复制
{{'background-image:linear-gradient(left, rgba(255,0,0,1)'+  (bufferProgressPercent!=='NaN'?bufferProgressPercent:0)+'%,rgba(0,0,0,0)'+(bufferProgressPercent!=='NaN'?bufferProgressPercent:0)+'%)'}}

变成这样:

代码语言:javascript
复制
{{'background:-moz-linear-gradient((left, rgba(255,0,0,1)'+  (bufferProgressPercent!=='NaN'?bufferProgressPercent:0)+'%,rgba(0,0,0,0)'+(bufferProgressPercent!=='NaN'?bufferProgressPercent:0)+'%)'}}

我想我必须添加除chrom之外的所有浏览器一个特定的线性渐变。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35828509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档