2017-05-30 269 views
0

我有一個動態創建的對象,有些時候它有屬性theCtns.services["example"].expose誰是數組,有時它沒有。這是正常的,這裏沒有錯誤。如何將屬性添加到對象?

然後我有做的方法:

if($('#labelExpose').children().length > 1){ 
    $('#labelExpose').children('input').each(function (index) { 
    if(this.value){ 
     console.log("value of expose field number:" + index ); 
     console.log(this.value); 
     theCtns.services[ctn].expose[index] = this.value; 
    } 
    }); 
}else{ 
    delete theCtns.services[ctn].depends_on; 
} 

但因爲沒有expose我有以下錯誤Uncaught TypeError: Cannot set property '0' of undefined但它應該與= this.value正確創建它?

那麼我該如何解決這個問題呢?

回答

1

所以我很確定你的問題是你需要先創建屬性,然後給第一個索引賦值。

嘗試更換這行:

theCtns.services[ctn].expose[index] = this.value; 

有了這兩條線:

theCtns.services[ctn].expose = theCtns.services[ctn].expose || []; // if it already exists, it will set it to itself, if not it will set it to an empty array 
theCtns.services[ctn].expose[index] = this.value; // this will not set the item at that index 
+0

我嘗試這樣,我回到這裏之後 – Jerome

+0

對不起@Jerome,你說這沒有奏效? –

+0

不,不,我測試你的答案,但我需要10分鐘來測試 – Jerome

0

這裏theCtns.services [ctn] .expose是未定義的,這就是爲什麼你得到這個錯誤。爲了避免這種錯誤,您可以添加一個檢查像

if(theCtns.services[ctn].expose) { 
    theCtns.services[ctn].expose[index] = this.value; 
} 

還是應該定義theCtns.services [箱] .expose值之前分配給它。

相關問題