2016-03-09 165 views
0

我写了这段代码,它很简单,我有一个空对象,它将包含一些其他对象作为属性,但该对象保持空白并且不添加所需的属性..将属性添加到对象

let buildProfileClientValidator = function(form , rules){ 

    let elements = {}; 

    function init(){ 
     //Some code that works fine 
     addElement(elementName , elementType); 
     addElement(elementName , elementType); 

     //the elements object should now have some other objects as properties 
     //but it`s empty !!!! 
     console.log(elements); 
    } 

    function addElement(elementName , elementType){ 
     //this condition works fine 
     if(!elementExist(elementName)){ 
     //console.log(elementName , elementType); also works fine -> the values of elementName , elementType are present 
     elements[elementName] = { 
      type : elementType, 
      value : '', 
      rules : (rules[elementName] == undefined) ? '' : rules[elementName].split('|') 
     }; 
     } 
    } 
} 

所以我错过了什么?!

+0

请向我们展示您的实际代码,包括'elementExist'函数。 –

+0

@ScottMarcus https://gist.github.com/anonymous/0ec45b639313cdeb14f3 –

+0

在我浏览你的代码之前,你能告诉我为什么你在使用let?你这样做是因为还是你有特殊原因? –

回答

1

检查你的代码,但不知道如何buildProfileClientValidator被调用(具体的rules参数是什么),我可以追查问题这一行:

(rules[elementName] === undefined) ? '' : rules[elementName].split('|') 

我已经修改了你的代码(使它是可测试的)在下面的提琴(https://jsfiddle.net/hssbsL19/40/)中,当我用静态值替换那一行时,代码起作用。

+0

你的回答是正确的,当我将对象属性从规则改变为elementRules时,对象属性被添加得很好:))向你求助^ _^ –

+0

很高兴提供帮助,但看着你的GitHub代码,我不知道看不到任何名为'elementRules'的变量。我只能看到第一行收到的'rules'参数。无论如何祝你好运! –

+0

我的意思是改变动态创建对象的余项,再次感谢 –