【问题标题】:How to Set Background image of div with ng-style如何使用 ng-style 设置 div 的背景图像
【发布时间】:2014-07-22 23:52:55
【问题描述】:

基本上我有一个链接,当它被点击时,我会显示一个模式。现在我可以在模式上显示其他属性,例如标题,除了背景图像!呃!

这是模态:

<div class="modalContainer" ng-style="{'background-image':'url({{selectedMeal.url}})'}">

                <div id="modalHeader"> 
                <div style="padding-top: 10px;">{{selectedMeal.title}}</div>

                </div>
</div>

这些是链接:

<div ng-click='selectMeal(meal)' class="contentItem" ng-repeat='meal in recipes | filter:searchText' ng-style="{'background-image':'url({{ meal.url }})'}">
                    <span id="contentItemHeader">{{ meal.title }}</span>
                    <span id="contentItemLevel">{{ meal.level }}</span>
</div>

json:

recipes:[
    {
      "type": "Breakfast",
      "title": "Chili con carne",
      "description": "A spicy and fragrant chili with ground beef, kidney beans, tomatoes, onions and garlic. Best served over rice with a dollop of sour cream and some cheese on top.",
      "ratings": 4,
      "duration": 12,
      "level":"medium",
      "url":"http://31.media.tumblr.com/bc0ea7c5f95701bff499f78b59d23e68/tumblr_mr74z9Lt3O1rs0z5go1_500.jpg",
      "ingredients": 
          [
            {
              "vegetable": "40ml"
            }
          ],
      "method": 
          [
            {
              "1": "In a medium sized stock pot, heat the oil over  heat. Saute onions, chile peppers andgarlic until soft."
            }
          ]
    },

    {
      "type": "Breakfast",
      "title": "Spicy Noodle",
      "description": "A spicy and fragrant chili with ground beef, kidney beans, tomatoes, onions and garlic. Best served over rice with a dollop of sour cream and some cheese on top.",
      "ratings": 5,
      "duration": 30,
      "level":"hot",
      "url":"http://38.media.tumblr.com/875b5eeb5b1efa37d2e9d36fbad836d3/tumblr_mzczesVrZD1rimr6yo1_1280.jpg",
      "ingredients": 
          [
            {
              "vegetable": "40ml"
            }
          ],
      "method": 
          [
            {
              "1": "In a  sized stock pot, heat the oil over  heat. Saute onions, chile peppers andgarlic until soft."
            }
          ]
    }]

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    你在使用单引号时犯了一些错误,你必须把你的变量放在单引号之外。

    对于这个 div

    <div class="modalContainer" ng-style="{'background-image':'url({{selectedMeal.url}})'}">
    

    这部分被当作字符串处理

    'url({{selectedMeal.url}})'
    

    而你希望 Angular 来解析这个变量

    {{selectedMeal.url}}
    

    所以要解决这个问题,正确的语法是

    <div class="modalContainer" 
      ng-style="{'background-image': 'url(' + selectedMeal.url + ')'}">
    

    【讨论】:

    • 你救了我,这个语法:'url(' + selectedMeal.url + ')' 是有效的,其他的 {{}} DON'T ...
    【解决方案2】:

    背景图像的正确语法是:

    background-image: url("src");
    

    ng-style 的正确语法是:

     <div ng-style="{'background-image':'url({{re.url}})'}" ></div>
    

    例如:

    <div ng-repeat="re in recipes">
    <div ng-style="{'background-image':'url({{re.url}})'}" style="height: 100px"></div>
    </div>
    

    JSFiddle : http://jsfiddle.net/U3pVM/7194/

    你可以使用自定义指令:

    app.directive('backgroundImageDirective', function () {
        return function (scope, element, attrs) {
            element.css({
                'background-image': 'url(' + attrs.backgroundImageDirective + ')',
                'background-repeat': 'no-repeat',
            });
        };
    });
    

    例如:

    <div ng-repeat="re in recipes">
    <div background-image-directive="{{re.url}}" style="height: 100px"></div>
    </div>
    

    JSFiddle : http://jsfiddle.net/U3pVM/7193/

    更新:

    <div ng-style="'{{re.url}}' != '' && {'background-image':'url({{re.url}})'}" style="height: 100px"></div>
    

    不会尝试获取不存在的图像。

    【讨论】:

      【解决方案3】:

      这对我有用。如果您从 json 或任何其他方式检索数据,请尝试此操作

      <div class="your-class" [style.background-image]="'url(' + url.image + ')'" [ngStyle]="{  'background-size': 'cover','background-repeat': 'no-repeat'} ">
      

      【讨论】:

        猜你喜欢
        • 2013-12-09
        • 1970-01-01
        • 2015-09-20
        • 1970-01-01
        • 2022-07-11
        • 2013-12-15
        • 2015-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多