如何从Angular JS中的ng-repeat复选框值中获取对象

时间:2015-10-06 18:17:42

标签: javascript angularjs checkbox angularjs-scope angularjs-ng-repeat

我遇到了问题,我很感激有人可以提供帮助。

现在我在我的表单中显示了几个从我的firebase数据库中获取的复选框。在我的控制器中,我正在尝试使用ng-submit来存储表单的整个数据。 我的复选框JSON格式应如下所示。

<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>

The checkbox image here

好的以下是我的HTML和Javascript代码

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

我的Javascript在这里

function checkbox(hashtags) {
    var arr = {};
    for(var hashtag in hashtags) {
        if(hashtags[hashtag].SELECTED === true){
            arr[hashtags[hashtag].$value] = true;
        }
    }
    return arr;
}

有人可以帮忙吗?非常感谢你。

更新 谢谢回复。我非常感谢!但是,我发现我忘了提一些东西,我从答复中尝试了答案而且没有用。下面的图片将解释我的问题。 enter image description here 非常感谢你!

最终解决方案以防人们对我刚才想出的答案感到好奇。以下是我的解决方案。感谢你们!我喜欢stackoverflow!

$request = xmlrpc_encode_request("methodname", array("username", "password", array('first_name'=>'John', 'last_name'=>'Smith')));

3 个答案:

答案 0 :(得分: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

}

答案 1 :(得分:0)

尝试将ng-model更改为

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

通过此操作,您的范围中将有一个mhashtags变量,这正是您需要发送的变量。

答案 2 :(得分:0)

假设 hashtags 是这个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>

#标签是对象的关键, bool 是值,因此不需要&#34; $ value&#34;。