2016-09-10 11 views
1

したがって、最初のもの、ここで配列(後で説明)のために私のコードです:の取得データ最初

var UserProfiles = [{ 
 
    userProfileID: 1, 
 
    firstName: 'Austin', 
 
    lastName: 'Hunter', 
 
    email: 'test', 
 
    token: '', 
 
    platform: 'android', 
 
    password: 'incorrect', 
 
    companyProfileID: 1, 
 
    UserTopics: [{ 
 
     topicID: 1, 
 
     topicName: 'Needs Maintenance', 
 
     alertLevel: 'Urgent', 
 
     TopicDepartments: [{ 
 
      departmentID: 1, 
 
      departmentName: 'Shop', 
 
      required: true, 
 
      DepartmentUsers: [{ 
 
       userProfileID: 1, 
 
       firstName: 'Austin', 
 
       lastName: 'Hunter', 
 
       email: 'test', 
 
       token: '', 
 
       platform: 'android', 
 
       companyProfileID: 1 
 
      }] 
 
     }] 
 
    }] 
 
}];

のでUSERPROFILESは何ですか?これは、多くのユーザープロファイルを保持する配列です。各プロファイルには複数のUserTopicsがあり、各UserTopicsには複数のTopicDepartmentsがあります。だから配列を持つ配列を持つ配列....吹いている心。 どのように入力されますか?それはサーバーに投稿してこの配列に挿入するイオン登録アプリケーションを使用して作成されます。しかし、それは私の問題ではありません。 私の問題は何ですか?だから、私のアプリには、私が投稿したコードがあります。私は単一のプロファイルを持っていて、UserProfiles [0]と言うことができます。 UserTopicsのtopicNameをすべてのインデックスで取得する必要があります。しかし、私はどのように各1つを取得し、私のアプリのドロップダウンメニューに入れるにはわからない。

私はストレージからユーザープロファイルを取得し、UserTopics.topicNameの関連のすべてを取得する必要が

<select ng-model="selectSubject" ng-change="changedValue(selectSubject)" data-ng-options="option.subject for option in subject"> 
 
\t \t \t \t \t <option value="" disabled>Select a Subject</option> 
 
\t \t \t \t </select>

を持っています。

私は私の問題を説明する際に恐ろしい仕事をしたことを知っています。しかし、私は実際にいくつかの助けを借りて、私と一緒に働くことができ、説明するのを助けることができます

+0

ネストされたループが必要になりますとして、あなたはそれぞれのオブジェクト内の複数の 'UserTopics'があるだろうと言って意味ですか? – brk

+0

Inside UserProfiles = []複数のユーザーが存在します。各ユーザーには、UserTopicsオブジェクトがあります。各UserTopicsオブジェクトには複数のトピックがあり、各トピックには複数のTopicDepartmentsがあります。各部門には複数の部署ユーザーがいます。私は分かりませんが、実際は私の状況にとっては素晴らしいデータモデルです。 –

+0

あなたのオブジェクトの構造は災害です。 – Azamantes

答えて

4

HTMLは次のとおりです。

<select id="topic_name"></select> 

今JSは以下の通りである:

for(var i=0;i<UserProfiles.length;i++) 
{ 
    var profile=UserProfiles[i];   //getting a profile 

    var topic=profile.UserTopics;  //getting UserTopics array 

    for(var j=0;j<topic.length;j++) 
    { 
     var topicname=topic[j].topicName; //getting each topic name 

     var topicdept=topic[j].TopicDepartments //getting array of topic departments 

     //now if you want more depth in topicdept array go on in same way 

     html=html+"<option>"+topicname+"</option>"; //generating the dropdown list for topicname 
    } 
} 

$("#topic_name").html(html); 
+0

私は$変数を見つけることができない取得し続けます。 –

+0

最初にjqueryライブラリを追加する必要があります。 –

+0

または、$( "#topic_name")の代わりにhtml(html)を使用します。document.getElementById( "#topic_name")。innerHTML = html。 –

1

あなたが探している方法は、.map()あなたは、配列内のオブジェクトからデータを抽出している場合、または.forEach()です配列内のオブジェクトを反復処理していて、他の場所にそれらを押し込んでいる場合。どちらも引数として関数を取ります。各プロファイルのエイリアスを作成し、それからどのようなデータを抽出してもかまいません。具体的には:

var topics = []; 

UserProfiles.forEach(function(profile){ 
    profile.UserTopics.forEach(function(topic) { 
     topics.push(topic.topicName); 
    }); 
}); 

幸運!

編集:アレイのすべてのトピックが追加されるようにリファクタリングします。

0

どうしようについて:

<select ng-model="selectedTopic" 
     ng-options="userTopic as userTopic.topicName for userTopic in selectedUser.UserTopics track by userTopic.topicId"> 
</select> 

これは "の配列ためとしてラベルを選択" に従います。それが何を意味するのか

がngModelが選択表現として割り当てされることがあり、選択したオプションはラベル表現として表示されます。

0

このスニペットが役に立ちます。入れ子になったjsonオブジェクトは使用しないでください。それは

UserProfiles.forEach(function(item, index) { 
    var getUserTopics = item.UserTopics; 
    getUserTopics.forEach(function(userTopicItem, userTopicIndex){ 
    var getTopicName = userTopicItem.topicName; 
    document.write('<pre>' + item.firstName + "--" + getTopicName + '</pre>') 
    }) 
}) 

JSFIDDLE

関連する問題