2014-11-16 5 views
3

Я работаю в Angular, в настоящее время фокусируюсь на фильтрации вложенного объекта. Вот структура моего объекта:Угловая: объектная структура лучшая практика

$scope.subjectBin = { 
    "Faculty of Engineering": { 
      "ECE": [{<course-object>},{<course-object>}], 
      "CHEM: [{<course-object>}] 
     }, 
    "Faculty of Science": { 
      "BIOL: [{<course-object>},...], 
      ... 
     }, 
     ... 
} 

Как я работаю с фильтрацией этого объекта, строить новые функции, и визуализировать это в слоистом аккордеоне, я думаю, что я должен изменить дизайн этого объекта.

Кто-то предложил, чтобы изменить объект на следующее:

$scope.subjectBin = [{ 
    faculty: "Faculty of Engineering", 
    subjects: [{ 
     subjectName: "ECE", 
     courses: [{<course-object>},{<course-object>}] 
     }, 
     ... 
    ] 
}, { 
    faculty: "Faculty of Science", 
    subjects: [{ 
     subjectBin: "CMPUT", 
     courses: [{<course-object>},...] 
     }, 
     ... 
    ] 
}] 

Мне сказали, что эта схема лучше, потому что: «он не использует объекты как раскладок и следует образцу».

Я согласен с тем, что это лучше, но хотелось бы получить некоторое разъяснение относительно макета объекта в целом.

Что такое передовой опыт для выкладки Вложенные объекты? Предпочтительны ли массивные объекты с фиксированными ключевыми именами?

ответ

1

Второй пример намного лучше.

В первом примере у вас есть список объектов с различными строковыми клавишами (не жестко запрограммированными). Проблема в том, что эти ключи, являющиеся строками, должны быть экранированы для удаления тегов, запятых или других проблемных недействительных строк ключей.

Второй пример намного лучше, так как у вас есть массив объектов с фиксированными жестко закодированными клавишами строк. Когда вы определяете свои ключи, вы всегда будете знать, какие свойства имеет этот объект, и какое содержимое имеет каждое свойство.

Вы должны всегда стремиться писать объекты, как это:

test = { 
    property1 : {}, 
    property2 : [], 
    property3 : value 
} 

где property1, свойство2 и property3 жестко закодированы вами, представляя их конкретное содержание.

Смежные вопросы