【发布时间】:2015-05-14 20:47:30
【问题描述】:
我有一个带有两个实心 div 的标题,一个在另一个之下。当我们滚动页面时,我在控制器中包含了动画来隐藏底部的 div。当我们向下滚动页面时,这个顶部的 DIV 也有一些变化。我在 ng-Class 中使用 smallHeader.floatItRight 和 smallHeader.floatItLeft 来控制它。正如您从 ss_header.html(指令模板)中看到的那样,具有 smallHeader.floatItRight 类的普通 div 可以完美运行,而来自 JSON 文件的 ng-Class 绑定中的“smallHeader.floatItRight”无法正常工作。对此有任何想法或想法吗?提前致谢。
JSON 文件有这个键和对应的值:
"headerHtmlContent":"<p class=\"coupons-text\" data-ng-class=\"smallHeader.floatItRight\">{{clippedCoupons}} Coupons Clipped | Your Savings:</p><p class=\"printable-text\">Printable | <a href=\"#\" class=\"disable-text\" data-ng-class=\"smallHeader.floatItLeft\">Direct2Card</a></p></div>",
具有指令的主要 HTML:
<ss-header styles="smallHeader" show="showHeader" header="headerHTML"></ss-header>
Directive.js:
myApp.directive("ssHeader", ['$compile', function($compile) {
return {
restrict: "E", //directive for element only
//replace: true, //replace the custom tag
scope:{
show:'=show',
headerHTML: '=header',
smallHeader: '=styles'
},
templateUrl: 'common/header/ss_header.html',
}
}]);
指令 HTML 模板:
<!--BINDING FROM JSON-->
<header data-ng-show="show" class="ss-header" data-ng-bind-html="headerHTML|convertAsHtml">
</header>
<!--NORMAL DIV WHERE NG-CLASS WORKS-->
<div data-ng-class="smallHeader.floatItRight">Sample DIV to show smallHeader.floatItRight works!!</div>
控制器:
angular.element($window).bind("scroll", function() {
var scrollPos = $(this).scrollTop();
if(scrollPos > previousTop){
$scope.fadeAnimation = true;
$scope.smallHeader = {
floatItRight: "fright",
floatItLeft: "fleft"
}
}
else
$scope.fadeAnimation = false;
previousTop = scrollPos;
$scope.$apply();
});
var generalServ = new fetchServiceData($service.api.SS_RESP);
generalServ.save().$promise.then(function(response){
$scope.headerHTML = $interpolate(response.en_US.siteLayout.headerHtmlContent)($scope);
},function(err){
console.log('error in fetching service data')
});
styles.css
.fleft{float:left;}
.fright{float:right;}
.coupons-text.fright{float:right;}
.disable-text.fleft{float:left;}
【问题讨论】:
-
我没有看到在您的示例代码中使用 JSON 内容“headerHtmlContent”的任何地方。在这里相关吗?
-
@shershen,是的!我在控制器中添加了一些内容。我从服务中获取“headerHtmlContent”并将其绑定到绑定到指令模板的范围变量 $scope.headerHTML。如果您需要对此进行更多说明,请告诉我。
-
首先,检查generalServ.save() 承诺是否在您开始滚动时成功解决($scope.headerHTML 已定义)?您的代码中是否有任何实际错误?
-
我的控制台没有出现任何错误。我的承诺已经兑现,我的 headerHTML 也很完美。
-
我猜的问题是 - 来自 JSON 的 ng-Class。在开发人员工具中,当我看到 HTML 时,它是这样的:
Coupons Clipped |您的储蓄:
。当我滚动页面时,应该添加了 fright 类。但事实并非如此。而普通的是来自 JSON 的 not 绑定,它添加了“fright”类。
标签: angularjs angularjs-directive ng-class