是否有任何方法为孤立的作用域别名提供默认值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

假设我有以下内容作为我的指令定义的一部分:

scope: {
    prop1: '@'
}

如果该指令没有prop1属性,prop1是否有任何方法获取默认值?当然,我可以检查它是否是自己定义的,并且设置它,但是当你期望的时候并不总是设置属性。我只是想知道是否有任何我在文档中遗漏的语法,或者是否有一个很好的标准方法来做到这一点。谢谢。

提问于
用户回答回答于

这取决于你想要分配的默认值。如果你想要在父范围内默认名称,则在指令的compile函数中设置默认属性值将会起作用:

compile: function(element, attrs) {
    if(attrs.person == undefined){
      attrs。$ set(“person”,“person”);
    }
  ...

如果你希望指令提供默认值,那么Angular将不会让你分配给隔离范围中的别名(您将从试图传播的观察者处获得“不可分配模型表达式”异常分配给独立的父范围)。但是,你可以通过将该属性标记为可选项来避免这种情况(这意味着当属性被忽略时,Angular不会注册监听器)。

 scope: {
    person: "=?"
  },
  link: function(scope, element, attrs) {
    if (scope.person == undefined) {
      scope.person = "Bob";
    }
    ...
  }
用户回答回答于

扫码关注云+社区