admin管理员组文章数量:1375561
Hi I have the following code to set the background to the whole page, and it works fine the background image is showed as expected, but the chrome console show this errors
GET http://localhost:3000/assets/img/backgrounds/%7B%7Bbgimg%7D%7D 404 (Not Found)
GET http://localhost:3000/assets/img/backgrounds/ 404 (Not Found)
This error is similar when loading image with src
instead of ng-src
but for background I don't know any directive. here is my code
HTML:
<body background="assets/img/backgrounds/{{bgimg}}">
<div class="view-container layer">
<div ng-view></div>
</div>
The controller
var bgImagesList = ['01.jpg',
'02.jpg', '03.jpg', '04.jpg',
'05.jpg', '06.jpg', '07.jpg',
'08.jpg', '09.jpg', '10.jpg',
'11.jpg'];
var changeBaclground = function () {
$rootScope.bgimg = bgImagesList[Math.floor(Math.random() * bgImagesList.length)];
};
Hi I have the following code to set the background to the whole page, and it works fine the background image is showed as expected, but the chrome console show this errors
GET http://localhost:3000/assets/img/backgrounds/%7B%7Bbgimg%7D%7D 404 (Not Found)
GET http://localhost:3000/assets/img/backgrounds/ 404 (Not Found)
This error is similar when loading image with src
instead of ng-src
but for background I don't know any directive. here is my code
HTML:
<body background="assets/img/backgrounds/{{bgimg}}">
<div class="view-container layer">
<div ng-view></div>
</div>
The controller
var bgImagesList = ['01.jpg',
'02.jpg', '03.jpg', '04.jpg',
'05.jpg', '06.jpg', '07.jpg',
'08.jpg', '09.jpg', '10.jpg',
'11.jpg'];
var changeBaclground = function () {
$rootScope.bgimg = bgImagesList[Math.floor(Math.random() * bgImagesList.length)];
};
Share
Improve this question
asked Sep 4, 2015 at 14:43
efirvidaefirvida
4,8755 gold badges49 silver badges76 bronze badges
1
-
1
You could consider using
ng-class
orng-style
I believe. – Jhey Commented Sep 4, 2015 at 14:48
3 Answers
Reset to default 5You can use ng-style for this purpose
<body ng-style="{'background-image':'url(assets/img/backgrounds/{{bgimg}})'}" >
Other easy way will be
html:
<body ng-style="setBackground()" >
In Controller:
var bgimg = bgImagesList[Math.floor(Math.random() * bgImagesList.length)];
$rootScope.setBackground = function(){
return {
'background-image':'url(assets/img/backgrounds/' + bgimg + ')'
}
}
I'd possibly consider using ng-style
for a solution.
Inside your controller when you change the background, update a style object in your $scope
which is reference by ng-style
of the element.
See some info about ng-style
here.
UPDATE
See the following plunkr http://plnkr.co/edit/dYIQ... that shows a simple use of ng-style
. When you check and uncheck the checkbox the background color will change between red and blue.
For your problem, your myStyle
object could be something like;
var myStyle = {
background: 'url(path/to/' + bgimg + ')'
}
Ideally, you won't need to create the myStyle
variable each time but the example gives you a simple example of how it can be used.
Hope that helps you out!
Use ng-style
with your element, this is how to set it:
ng-style="{'background-image':'url(assets/img/backgrounds/{{bgimg}})'}"
And this is how your whole code should be:
<body ng-style="{'background-image':'url(assets/img/backgrounds/{{bgimg}})'}">
<div class="view-container layer">
<div ng-view></div>
</div>
You can read more about it at ngStyle - directive in module ng and you will find how to use it here.
本文标签: javascriptDynamically seting a background image using AngularJs ControllerStack Overflow
版权声明:本文标题:javascript - Dynamically seting a background image using AngularJs Controller - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744081008a2587636.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论