Angular getter / setter,带有可以未定义的参数

时间:2014-09-10 22:06:29

标签: javascript angularjs angular-ngmodel

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

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

2 个答案:

答案 0 :(得分:3)

使用javascript的原生arguments属性可以轻松解决此问题,我将建议对angular的文档进行编辑。这是一个例子:

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

答案 1 :(得分:1)

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

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