现在已经使用 angular 几个月了,距离我投入到指令中只有一周左右的时间。今天我在尝试构建一个复选框字段依赖于另一个复选框字段的设置页面时遇到了这个小怪癖(如 - 仅在选中另一个复选框字段时显示)。
我发现有 ng-disabled 可以工作,但我想如果另一个没有被检查,我宁愿隐藏整个字段,+我想我可以在原始 html 上使用 ng-show 来做到这一点,但我我对指令非常着迷,我想了解它是如何从内部完成的。
所以,这里是 HTML:
<form>
<input type="checkbox" data-ng-model="mdl.show" />
<span>Switches 'mdl.show' on and off, now it's {{mdl.show}}</span>
<div spg dependent="mdl.show"></div>
</form>
和控制器:
app.controller('appCtrl',['$scope',
function($scope){
$scope.mdl = {show: true};
}
])
和指令:
app.directive('spg',function(){
return {
restrict: 'A',
compile: function (element,attrs){
var html = '<div data-ng-show="' + attrs.dependent + '">';
html += '<p data-ng-show="' + attrs.dependent + '">This text doesn\'t show if dependent resolves to false</p>';
html += '<p>For some reason, even though div wrapper has the same configuration as the previous \'p\' - this one will show either way</p>'
html += '</div>';
angular.element(element).replaceWith(html);
}
}
})
这就是那个笨拙的东西。除了获得解决此问题的方法外,我更愿意了解它发生的原因。虽然两者都很受欢迎。谢谢。
编辑:1.0.7 和 1.2.0rc1 的行为相同。