css 如何使用ng-style!important?

v09wglhw  于 2023-03-25  发布在  其他
关注(0)|答案(5)|浏览(212)

标签按钮已经有光标css分配.我想覆盖光标css根据is_active值禁用按钮. is_active可能有值0或1.以下是代码的js/html请让我知道正确的方法将光标css应用到按钮.

$scope.ngStyleDisabled = function(status) {
  if (status == 1) {
    return {};
  } else if (status == 0) {
    return '{\'cursor\':\'not-allowed !important\',\'pointer-events\':\'none\'}';
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<button ng-style="{{ngStyleDisabled(item.is_active)}}">Action Button</button>
ssm49v7z

ssm49v7z1#

剧透警告:所有说ng-style不支持!important的人都是*错了!!

  • 好吧,有点错误。也就是说,虽然它肯定 * 不 * 支持开箱即用,* 你可以用the following workaround强制它 *(为了方便起见,在这里进行了简化):
<elem data-ng-attr-style="{{ 'color: ' + your_color_var + ' !important' }}"></elem>

例如:

<span data-ng-attr-style="{{ 'color: indigo !important' }}"></span>

等等...所以我们必须使用一个黑客来让!important工作!?!这就像...一个双重黑客!!!或者一个双重交叉!!一个三重交叉?!?
哈哈。

ht4b089n

ht4b089n2#

ng-style不支持!important
因此,替代方案是使用ng-class而不是ng-style,它将解决问题。
如果你想具体使用ng-style,那么试着在html本身中编写-请不要尝试在任何函数中编写。

hjqgdpho

hjqgdpho3#

根据documentation,你的表达式需要是一个对象:
一个表达式,它求值为一个对象,该对象的键是CSS样式名,值是这些CSS键的对应值。
尝试返回一个对象而不是字符串(使用quoutes,因为CSS属性可能不是有效的键):

$scope.ngStyleDisabled = function(status) {
  if (status == 1) {
    return {};
  } else if (status == 0) {
    return {
      'cursor': 'not-allowed', // !important does not work in ng-style
      'pointer-events': 'none'
    };
  }
}

另外,在模板中省略花括号:

<button ng-style="ngStyleDisabled(item.is_active)">Action Button</button>

这个JSFiddle显示了属性是如何应用到按钮上的。

注意根据question和GitHub issueng-style指令中不支持!important关键字。您可以在链接后面找到解决方法。

gev0vcfq

gev0vcfq4#

https://github.com/angular/angular.js/issues/5379中提到的最优雅的解决方法对我很有效!
示例(用玉/哈巴狗书写):
a#share-test-link.item(ng-show="iAmTeamCreator()", href="", data-ng-attr-style="{{iAmTeamCreator() && 'display: block!important' || ''}}")

xxe27gdn

xxe27gdn5#

因为!important的用法在ng-style中是直接禁止的(源代码:angular github issue mentioning the same)。
可以只使用angular属性绑定,并通过字符串连接生成样式字符串:

<div
 [attr.style]="
    'font-family: ' + (selectedFontFamily ?? 'revert') +
    ';' +
    'font-size: ' + (selectedFontSize ?? 'revert') ">
</div>

相关问题