根据变量值更改代码

时间:2015-05-08 11:10:09

标签: javascript

我有以下Javascript变量:

scope.model = {
  errors: {
    email: ["error1", "error2"],
    name: ["error"]
  }
}

我的功能如下:

function (scope, element, attributes) {            
  if (scope.model.errors) {
    if (scope.model.errors[attributes.validator]) 
      // Do something
}

问题是错误并不总是在同一范围变量上。

我可以有类似的东西:

scope.view = {
  newErrors: {
    email: ["error1", "error2"],
    name: ["error"]
  }

在函数内部,我知道如何获取变量:

function (scope, element, attributes) {            

  var errors = attributes["validatorErrors"];

  // Note: errors is this case "view.newErrors"
  // So the following code would become: 

  if (scope.view.newErrors) {
    if (scope.view.newErrors[attributes.validator]) 
      // Do something
}

更新

之前我曾尝试[],但现在我明白为什么它不起作用了:

function (scope, element, attributes) {            

  var errors = attributes["validatorErrors"];

  if (scope[errors]) {
    if (scope.[errors][attributes.validator]) 
      // Do something
}

如果错误='错误'它会起作用......

如果错误=' model.errors'它赢了。在这种情况下,我需要:

scope['model']['errors'] ...

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用数组表示法:

if (scope[errors]) {
  if (scope[errors][attributes.validator]) {
    // do something

答案 1 :(得分:0)

你实际上已经知道了答案,因为你在你的例子中使用它。

scope[newErrors][attributes.validators]

这里要小心,因为当范围[newErrors]未定义时它会中断。因此可能需要一些错误处理