tim*_*mmy 47 javascript angularjs angularjs-directive
我试图切换指令使用的元素的可见性<div ngHide="readOnly">.值或readOnly通过指令传入.
angular.module('CrossReference')
.directive('singleViewCard', [function() {
return {
restrict:'AE',
templateUrl: '/CrossReference-portlet/js/templates/SingleViewCard.html',
replace:true,
scope: {
readOnly:'@'
},
link: {
pre:function(scope, tElement, tAttrs) {},
post:function(scope, tElement, tAttrs) {};
}
}
};
}]);
Run Code Online (Sandbox Code Playgroud)
这似乎适用于以下情况:
<!-- element rendered in single-view-card is hidden -->
<div single-view-card read-only="{{true}}"/>
<!-- element rendered in single-view-card is shown -->
<div single-view-card read-only="{{false}}"/>
Run Code Online (Sandbox Code Playgroud)
但是,如果我反转布尔表达式<div ngHide="!readOnly">,该指令的以下用法不会按预期隐藏潜水:
<!-- element is rendered when it should be hidden -->
<div single-view-card read-only="{{false}}"/>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
bto*_*rdz 113
你做错了什么
readOnly:'@'
Run Code Online (Sandbox Code Playgroud)
这意味着readOnly将是一个字符串,使其成为js变量try
readOnly:'='
Run Code Online (Sandbox Code Playgroud)
然后
<div single-view-card read-only="{{false}}"/>
Run Code Online (Sandbox Code Playgroud)
应该
<div single-view-card read-only="true"/>
Run Code Online (Sandbox Code Playgroud)
你需要显示更多的代码,这可能是错误的一部分,但我认为还有更多
希望能帮助到你
axe*_*uch 10
目前它不起作用,因为bto.rdz在他的回答中提到,@将读取属性的原始值,这就是你需要插入你的布尔值的原因.在以下示例中,您可以readOnly通过持有模型的控制器切换指令范围级别的值ctrlReadOnly.
我建议的是使用范围变量使其动态化=.
如何使用你的指令
<div single-view-card read-only="ctrlReadOnly"></div>
Run Code Online (Sandbox Code Playgroud)
angular.module('CrossReference', [])
.directive('singleViewCard', [function () {
return {
restrict: 'A',
template: '<div ng-hide="readOnly">Hidden when readOnly is true</div>',
replace: true,
scope: {
readOnly: '='
}
};
}])
Run Code Online (Sandbox Code Playgroud)
.controller('myCtrl', function ($scope) {
$scope.ctrlReadOnly = false;
});
Run Code Online (Sandbox Code Playgroud)
我在这里做了一个小提琴
| 归档时间: |
|
| 查看次数: |
61744 次 |
| 最近记录: |