【发布时间】:2015-05-01 11:05:00
【问题描述】:
我试图通过将布尔值传递给属性并将其分配回 ng-show 来控制指令的可见性。
我有以下标记:
<div>
{{ showFromDate }}
<input type="datetime" ng-click="showFromDate =!showFromDate" ng-model="fromDate"/>
<simple-date-picker class="date-picker" visibility="showFromDate" ng-show="popupVisible" data-ng-model="fromDate">
<p>This is a custom date picker</p>
</simple-date-picker>
</div>
我的 angularjs 代码是:
var app = angular.module('myapp',[]);
app.directive('simpleDatePicker', ['$document', '$parse', function ($document, $parse) {
return {
restrict: 'EA',
link: function (scope, elem, attrs) {
},
scope: {
visibility: "="
},
controller: ["$scope", function ($scope) {
$scope.popupVisible = $scope.visibility;
$scope.showPopup = function($event) {
$event.stopPropagation()
$scope.popupVisible = true;
};
}]
};
}]);
我遇到的问题是,在指令中我无法检索“可见性”的值,因此我可以将其分配给 $scope.popupVisible,然后将其传递给 ng-show。
当我将 ng-show 更改为 ng-show="showFromDate" 时,我可以使用输入的点击处理程序显示和隐藏指令。示例:
<div>
{{ showFromDate }}
<input type="datetime" ng-click="showFromDate =!showFromDate" ng-model="fromDate"/>
<simple-date-picker class="date-picker" visibility="showFromDate" ng-show="showFromDate" data-ng-model="fromDate">
<p>This is a custom date picker</p>
</simple-date-picker>
</div>
我的问题是,如何将 showFromDate 传递给 popupVisible?
请注意,我想这样做是因为屏幕上有多个指令实例,每个实例都需要单独控制。
【问题讨论】: