@jaime 你的回答很好。但是如果你的页面有 $http.get 那么你就可以使用 ng-if
app.directive('backImg', function(){
return function($scope, $element, $attrs){
var url = $attrs.backImg;
$element.css({
'background-image': 'url(' + url + ')',
'background-size': 'cover'
});
}
});
在工厂
app.factory('dataFactory', function($http){
var factory = {};
factory.getAboutData = function(){
return $http.get("api/about-data.json");
};
return factory;
});
在控制器区域
app.controller('aboutCtrl', function($scope, $http, dataFactory){
$scope.aboutData = [];
dataFactory.getAboutData().then(function(response){
// get full home data
$scope.aboutData = response.data;
// banner data
$scope.banner = {
"image": $scope.aboutData.bannerImage,
"text": $scope.aboutData.bannerText
};
});
});
如果您使用下面的 ng-if 和视图,那么您将通过插值获得图像,否则,您将无法获得图像,因为指令在 HTTP 请求之前获取值。
<div class="stat-banner" ng-if="banner.image" background-image-directive="{{banner.image}}">