2015-02-12 2 views
0

Мне нужна помощь для моего кода JSlink.Нажмите в моем массиве javascript

Я использовал этот код, он работает хорошо:

var Fields = { 
    "Continent": { 
      "NewForm": FieldTemplate, 
      "EditForm": FieldTemplate 
    }, 
    "Country": { 
      "NewForm": FieldTemplate, 
      "EditForm": FieldTemplate 
    }, 
    "City": { 
      "NewForm": FieldTemplate, 
      "EditForm": FieldTemplate 
    } 
}; 

Но я хотел бы сделать его динамичным, так что я попытался это:

for (var i = 0; i < fields.length; i++){ 
    Fields.push(fields[i].name: { 
     "NewForm": countryFieldTemplate, 
     "EditForm": continentFieldTemplate 
    }); 
} 

В течение цикла, поля является массив, который содержит «Континент», «Страна» и «Город», но мой код не работает, и я хочу знать, почему. Спасибо заранее.

+0

нам нужно больше кода. Как выглядит массив полей? где вы инициализируете countryFieldTemplate и т. д.? – treegarden

+0

'Поля' это не массив, а объект. поэтому лучше использовать 'for in' loop – qtgye

+0

' push' - это метод 'Array', тогда как' Fields' - простой объект. – hindmost

ответ

0

Вы можете создать свойства на объект JavaScript, используя синтаксис:

Object[propertyName] = propertyValue; 

Так это должно работать:

var Fields = {}; 
for (var i = 0; i < fields.length; i++){ 
    Fields[fields[i]] = { 
     "NewForm": countryFieldTemplate, 
     "EditForm": continentFieldTemplate 
    }; 
} 

Где fields является:

var fields = ["Continent", "Country", "City"] 
0
// Fields needs to be an object rather than an array 
var Fields = {}; 

// loop over your fields array 
for (var i = 0; i < fields.length; i++){ 

    // then just assign each field as the key to the Fields object 
    Fields[fields[i]] = { 
     NewForm: countryFieldTemplate, 
     EditForm: continentFieldTemplate 
    }; 
} 

DEMO