как получить объект из значений флажка ng-repeat в Angular JS

0

Я сталкиваюсь с проблемой, и я буду признателен, что кто-то может помочь.

Сейчас я показываю несколько флажков в моей форме, которые захватывают мою базу данных firebase. И в моем контроллере я пытаюсь использовать ng-submit для хранения целых данных формы. Мой флажок Формат JSON должен выглядеть следующим образом.

{
    "apple" : true,
    "spotify" : true 
}

Изображение флажка здесь

хорошо, мой код из HTML и Javascript

<label class="checkbox-inline" ng-repeat="hashtag in hashtags" for="{{hashtag}}">
  <input type="checkbox" name="{{hashtag.$value}}" id="{{hashtag.$value}}" value="{{hashtag.$value}}" ng-model="hashtag.SELECTED" ng-true-value="true" ng-false-value="false"> 
    {{hashtag.$value | capitalize}}
</label>

Мой Javascript здесь

form.$add({
    description: $scope.inputDescription,
    hashtags: {
        *I don't know how to put checkbox result here.*
    },
    time: Firebase.ServerValue.TIMESTAMP,
    title: $scope.inputTitle,
    url: $scope.inputUrl
})

Кто-нибудь может помочь, пожалуйста? Огромное спасибо.

Обновление Спасибо за ответ. Я очень ценю это! Однако я узнал, что забыл что-то сказать, и я попробовал ответы из ответа, и они не сработали. Снимок ниже объяснит мою проблему. введите описание изображения здесь Большое вам спасибо!

Наконец, решение в случае, если люди интересуются ответом, который я только что понял. Следующее - мое решение. Спасибо вам, ребята! Мне нравится stackoverflow!

function checkbox(hashtags) {
    var arr = {};
    for(var hashtag in hashtags) {
        if(hashtags[hashtag].SELECTED === true){
            arr[hashtags[hashtag].$value] = true;
        }
    }
    return arr;
}
  • 0
    это hashtags первый описанный JSON?
Теги:
checkbox
angularjs-scope
angularjs-ng-repeat

3 ответа

1
Лучший ответ

Что-то вроде этого, я нашел информацию по аналогичному вопросу:

<input type="submit" name="submit" value="submit" ng-click="check(hashtags)"/>

$scope.check= function(data) { 
var arr = [];
for(var i in data){
   if(data[i].SELECTED=='Y'){
       arr.push(data[i].value);
   }
}
//At this points you have all the selected hashtags on arr Array

}

  • 0
    Большое спасибо, Крис! Я это сделал. Сначала я использовал ваш ответ, но почему-то просто не работал. И я использовал этот ответ снова и немного дернулся, и на этот раз он работает! Спасибо вам!
0

Попробуйте изменить свою ng-model на

ng-model="mhashtags[hashtag.$value]"

При этом у вас будет переменная mhashtags в вашей области действия, которая будет именно то, что вам нужно отправить.

0

Предполагая, что хэштеги - это JSON:

$scope.hashtags = {
  "apple" : true,
  "spotify" : true 
};

Я бы изменил ng-repeat:

<label class="checkbox-inline" ng-repeat="(hashtag, bool) in hashtags" for="{{hashtag}}">
  <input type="checkbox" name="{{hashtag}}" id="{{hashtag}}" ng-value="bool" ng-model="hashtag"> 
    {{hashtag | capitalize}}
</label>

hashtag является ключом объекта, а bool - значением, поэтому нет необходимости в "$ value".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню