我有一个模型(角度材料自动完成元素)在我的应用程序的不同页面上使用,这个自动完成没有一个明确的按钮,所以我做了一个指令,当这个自动完成有相同的值时动态添加一个关闭按钮,当自动完成没有值时删除它。我的要求是,当model的(自动完成) ng-disabled计算为true时,禁用此关闭按钮。我知道有多种方法可以做到这一点,特别是使用隔离作用域和绑定它们的值,但我不想修改我已经开发的所有页面。
function clearAutocomplete($parse, $compile, $log) {
var diretive = {
restrict: 'A',
link: linkFunciton
}
return diretive;
function linkFunciton(scope, element, attrs) {
var ngDisabledModel = $parse(attrs.ngDisabled);
scope.isDisabled = ngDisabledModel(scope);// value binded to auto complete ng-diabled
var button = angular.element('<md-button>').attr('ng-disabled', '{{isDisabled}}');
button.append('<md-icon md-font-set="material-icons">close</md-icon>');
element.append(button);
$compile(button)(scope);
var searchTextModel = $parse(attrs.mdSearchText);
scope.$watch(ngDisabledModel, function(isElementDisabled) {
scope.isDisabled = isElementDisabled;
});
button.on('click', function() {
scope.$apply(function() {
searchTextModel.assign(scope, undefined);
element.find('input').focus();
});
});
}
}
此代码的问题在于,即使禁用了自动完成功能,清除按钮仍保持启用状态。实现此功能的最佳方式是什么(不添加任何独立的范围)
发布于 2016-09-26 21:42:08
将您的按钮替换为:
<md-icon md-font-set="material-icons" ng-disabled="isDisabled">close</md-icon>
每当您的isDisabled变量在监视器中翻转为真时,这将禁用close按钮。
https://stackoverflow.com/questions/39712395
复制相似问题