2016-07-24 11 views
1

私はAngularでスライドショー効果をしようとしていますが、background-imagestyleタグ(ng-styleを使用)のついたdivがあります。スタイルタグ内のURLを角度で書式設定するにはどうすればよいですか?

URLにアンパサンドが含まれており、毎回parse:lexerrというエラーが表示されます。私はそれら(&)または直接(&)をエスケープしようとしましたが、いずれの場合も同じエラーです。ディレクティブは次のようになります。

Error: [$parse:lexerr] Lexer Error: Unexpected next character at columns 133-133 [&] in expression [background-image:url(https://WWW.HOST.COM/cloud/user-media-32/0604338b-529a-4c42-8f6d-823978327352.jpg?mode=max&scale=both&maxwidth=1280&maxheight=697)]. 
http://errors.angularjs.org/1.5.3/$parse/lexerr?p0=Unexpected%20next%20character%20&p1=s%20133-133%20%5B%26%5D&p2=background-image%3Aurl(https%3A%2F%2FWWW.HOST.COM%2Fcloud%2Fuser-media-32%2F0604338b-529a-4c42-8f6d-823978327352.jpg%3Fmode%3Dmax%26scale%3Dboth%26maxwidth%3D1280%26maxheight%3D697) 
    at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:13438:12 
    at Lexer.throwError (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:27016:11) 
    at Lexer.lex (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:26975:16) 
    at Object.AST.ast (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:27139:30) 
    at Object.ASTCompiler.compile (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:27592:3 


Error: [$parse:lexerr] Lexer Error: Unexpected next character at columns 133-133 [&] in expression [background-image:url(https://WWW.HOST.COM/cloud/user-media-32/0604338b-529a-4c42-8f6d-823978327352.jpg?mode=max&scale=both&maxwidth=1280&maxheight=697)]. 
http://errors.angularjs.org/1.5.3/$parse/lexerr?p0=Unexpected%20next%20character%20&p1=s%20133-133%20%5B%26%5D&p2=background-image%3Aurl(https%3A%2F%2FWWW.HOST.COM%2Fcloud%2Fuser-media-32%2F0604338b-529a-4c42-8f6d-823978327352.jpg%3Fmode%3Dmax%26scale%3Dboth%26maxwidth%3D1280%26maxheight%3D697) 
    at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:13438:12 
    at Lexer.throwError (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:27016:11) 
    at Lexer.lex (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:26975:16) 
    at Object.AST.ast (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:27139:30) 
    at Object.ASTCompiler.compile (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:27592:31) 
    at Parser.parse (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:28479:29) 
    at $parse (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:28610:39) 
    at Scope.$watch (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:29823:19) 
    at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:42629:9 
    at invokeLinkFn (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:22993:9)" 

私は何かを明らかに足りない:ここで

<div class="responsive-image" ng-style="background-image:url({{service.blobHost}}/{{slides.currentSlide}})"> 

がエラーでありますか?ご協力いただきありがとうございます!

答えて

1

ここに行く:

<div class="responsive-image" 
    ng-style="{'background-image': 'url(' + service.blobHost + '/' + slides.currentSlide + ')'}"></div> 

ここでは、フィルタの一例です。 「スライドを変更する」は、値が変更される最初の質問(コメント内の)とフィルタを適用する方法に応答します。その更新は、基礎となるときの値はかかわらず、更新します

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

 
app.controller("FooController", function($scope, $filter) { 
 

 
    $scope.service = { 
 
    blobHost: 'https://pixabay.com/static/uploads/photo' 
 
    }; 
 

 
    $scope.slides = { 
 
    currentSlide: '2016/04/19/06/03/mercedes-1338063__340' 
 
    }; 
 

 
    $scope.changeSlide = function() { 
 
    $scope.slides.currentSlide = '2016/07/02/22/42/berries-1493905_640' 
 
    }; 
 

 
    $scope.applyFilter = function(value) { 
 
    return $filter('myFilter')(value) 
 
    } 
 
}); 
 

 
app.filter('myFilter', function() { 
 
    return function(value) { 
 
    return value + '.jpg'; 
 
    } 
 
});
.responsive-image { 
 
    min-height: 500px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="sa" ng-controller="FooController"> 
 
    <a href="" ng-click="changeSlide()">Change slide</a> 
 
    <br> 
 

 
    <div class="responsive-image" ng-style="{'background-image': 'url(' + service.blobHost + '/' + applyFilter(slides.currentSlide) + ')'}"></div> 
 
</div>

+0

?私は、更新可能な値がそれぞれの二重括弧内にある必要があると仮定しました。 –

+0

別の質問:2番目の式にフィルタを追加する必要があります。それは{{slides.currentSlide | myFilter}}でした。シングルブレース構文を使用してどのように見えますか? –

+0

@ArianKulpは値を更新しようとしましたか? –

関連する問題