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

时间:2015-12-16 06:14:41

标签: javascript angularjs

这就是我尝试过的以及我想要做的事情:

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中包含scope.cap(我正在尝试完成此任务),true不会返回cap。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

您可以使用in关键字检查属性是否在对象中。如果您添加属性attrcap应该有一个属性cap,如果没有,那么该属性将不会出现。

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

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