角度吸气剂/设置器,参数可以是未定义的

Angular getter/setter with an argument that can be undefined

本文关键字:参数 未定义 设置      更新时间:2023-09-26

如何编写可以接受未定义的ng模型setter方法?例如,当用户清空类型设置为日期的输入时,angular 将undefined作为新值发送,这意味着angular.isDefined()不再可用于确定该方法是作为 getter 还是 setter 调用的。这是文档中给出的 getter/setter 方法的示例:

$scope.user = {
  name: function (newName) {
    if (angular.isDefined(newName)) {
      _name = newName;
    }
    return _name;
  }
};

使用 javascript 的原生 arguments 属性使这个问题很容易解决,我会建议对 angular 的文档进行编辑。下面是一个示例:

$scope.user = {
  name: function (newName) {
    if (arguments.length > 0) {
      _name = newName;
    }
    return _name;
  }
};

所有 JavaScript 函数调用中包含的内置对象arguments只是一个参数数组。(W3学校(将数组按名称与零进行比较,arguments > 0的计算结果为 false 。您需要与数组长度进行比较。

$scope.user = {
    name: function (newName) {
        if (arguments.length > 0) {
            _name = newName;
        }
        return _name;
    }
};