return {
restrict : "AC",
template : + '<div> '
+ ' <span class="smallFont" data-ng-hide="dossierItem.itemDetail.pubdate">{{ item.createdOn | hbdatetime }}</span>'
+ ' <span class="smallFont" data-ng-show="dossierItem.itemDetail.pubdate">{{ item.itemDetail.pubdate | hbdatetimepubdate }}</span>'
+ ' </div>',
link : function(scope, elm, attrs) {
scope.$watch(attrs.itemList, function(value) {
elm.text(value);
});
}
我可以看到两个日期都在inspect元素中加载。但是它总是在视图上显示创建日期。 我在点击这个时显示详细信息,如果我这样做,它将在两个地方显示正确的信息。
但不确定为什么ng-hide在指令中不起作用。
请建议
答案 0 :(得分:1)
试试这个。
问题在这里你错过了模板部分中的open div
标记,并确保在创建/初始化对象之前分配值。
$scope.dossierItem = {};
$scope.dossierItem.itemDetail = {};
$scope.dossierItem.itemDetail.pubdate = new Date();
这个原因问题:
$scope.dossierItem.itemDetail.pubdate = new Date();
如果没有初始化dossierItem
对象则抛出错误。请更好地检查您的控制台错误。为清楚起见,很少有东西被淘汰。
var myApp = angular.module("myApp",[]);
myApp.controller("MainCtrl",function($scope){
$scope.dossierItem = {};
$scope.dossierItem.itemDetail = {};
$scope.dossierItem.itemDetail.pubdate = new Date();
$scope.validDate = true;
$scope.item= {},
$scope.item.createdOn = new Date();
console.log($scope.dossierItem);
});
myApp.directive("test", function(){
return {
restrict : "AC",
template :'<div>'
+'<span class="smallFont" ng-hide="dossierItem.itemDetail.pubdate">span1 {{item.createdOn}} </span>'
+'<span class="smallFont" ng-show="dossierItem.itemDetail.pubdate">span2 {{item.createdOn}}</span>'
+'</div>',
}
});