如何根据属性的存在将条件语句添加到指令中

How to add a conditional statement to a directive based on presence of an attribute?

本文关键字:添加 语句 指令 条件 何根 属性 存在      更新时间:2023-09-26

这是我尝试过的,也是我想要做的:

HTML:

<update-field name="test" cap></update-field>

JS:

 scope: {
      name: "@",
      cap: "@"
 },
 controller: function() {
        },
 link: function(scope, elem, attr, ctrl) {
   scope.submit = function($event, object) {
      query.first({
          success: function(object) {
        if (scope.cap) {
           // do stuff

但是,如果我在HTML中包含capscope.cap不会返回true(这正是我试图实现的)。做这件事的正确方法是什么?

链接函数已经有attr参数。此attr包含添加到元素的所有属性。

因此,在链接功能内部,您可以检查

if (attr.cap != null) {
  // Do stuff
}

您可以使用in关键字检查属性是否在对象内。如果添加属性cap,则attr应具有属性cap,否则,该属性将不存在。

'cap' in attr // <--- true or false

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in