【发布时间】:2016-03-07 20:57:07
【问题描述】:
我正在构建一个采用卡片形式的指令。当我加载卡片模板时,如果用户之前隐藏了卡片,我想确保卡片是隐藏的。我可以通过request.hide 属性跟踪这个。
这是我的指令(准系统):
app.directive('request', ['$http', '$timeout', function($http, $timeout) {
return {
replace: true,
templateUrl: '/assets/request.html',
transclude: false,
scope: {
request: '='
},
controller: ['$scope', '$http', '$timeout', function($scope, $http, $timeout) {
// Cool stuff goes in here
}]
};
}]);
这是我的模板:
<div>
<div ng-hide"request.hide" class="card">
<!-- Cool stuff goes in here -->
</div>
</div>
当页面加载时,每个request 都有一个hide 属性。理论上,当我调用我的指令时,如果hide === true 应该隐藏它。不幸的是,情况似乎并非如此。无论我尝试什么,我都无法在初始化时隐藏我的指令。我尝试在根元素上使用ng-hide="request.hide"、ng-show="!request.hide" 和ng-if="!request.hide",但没有任何效果。
我想知道这些指令是否不适用于自定义指令的根元素,因此我尝试将我的指令包装在一个额外的 div 中并使用 ng-hide、ng-show 或 ng-if on .card div,现在是子元素,但也没有效果。
似乎ng-hide 根本没有被评估,或者在request 被定义在指令的范围之前被评估。
【问题讨论】:
-
应该可以正常工作。显示
request对象的示例。一个简单的演示也会有所帮助。 -
您确定您的请求对象的属性设置正确吗?尝试使用
ng-hide="true"看看是否隐藏它 -
在controller函数中,记录$scope.request的值,看是否有hide属性。
标签: javascript angularjs angular-ng-if ng-hide