AngularJs 将模型属性绑定到复选框

AngularJs binding model attribute to checkbox

本文关键字:复选框 绑定 属性 模型 AngularJs      更新时间:2023-09-26

我正在尝试在创建帖子时分配一些标签。我有一个看起来像这样的帖子模型:

var mongoose = require('mongoose');
var PostsSchema = {
    title: String,
    content: String,
    postedBy: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Users'
    },
    comments: [{
        text: String,
        postedBy: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Users'
        },
    }],
    tags: [String]
};

我正在尝试将一些复选框绑定到帖子中的"标签"数组属性。

这是我的后路由器的样子:

///* Create post */
postRouter.route('/').post(function (req, res) {
        mongoose.createConnection('localhost', 'CMS');
        console.log(req.body);
        var post = {
            title: req.body.title,
            content: req.body.content,
            tags: req.body.tags
        };
        if (typeof req.body.title === "undefined" || typeof req.body.content === "undefined")
        {
            res.json({message:"Error"});
        }else
        {
        var newPost = new Posts(post);
        newPost.save(function (err, post) {
            if (err) res.json({message:"Error"});
            res.json(post);
        });
        }
});

我的控制器如下所示:

$scope.createPost = function(post){
        postService.createPost(post);
        postService.getPosts()
            .then(modelPosts);
    }

我的观点是这样的:

div(ng-controller='postController') 
h2 Create Post
                    form
                        div.form-group
                            label(for='title') Title
                                input(type='text', class='form-control', id='title', name='title', placeholder='Title', ng-model='newpost.title', autofocus)
                        div.form-group
                            label(for='password') Content
                                input(type='text', class='form-control', id='content', name='content', placeholder='content', ng-model='newpost.content')
                    div(ng-controller='tagController')
                        h2 Tags
                        div( ng-model='Tags', ng-init='getTags()')
                            ul( ng-repeat='tag in Tags')
                                li
                                    label
                                        input(ng-model='newpost.tag',value='{{tag.name}}', type='checkbox', name='tag[]')
                                        span {{tag.name}}
                    button( ng-click='createPost(newpost)', class='btn btn-small btn-primary') Create Post

不确定将我的观点绑定到模型有什么问题。标签被渲染并创建复选框,但是当我选中一个复选框时,所有这些都会被选中。

input(ng-model='newpost.tag', ng-value-true='tag.name', ng-value-false='null' type='checkbox', name='tag[]')

文档输入[复选框]