0

I am trying to assign some tags on post creation. I have a Post model that looks like this:

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]

};

I am trying to bind the some checkboxes to the 'tags' array attribute in the Post.

This how my post router looks like:

///* 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);
        });
        }

});

My controller looks like:

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

And my view look like:

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

I am not sure what is the problem with the binding my view to the model. Tags are rendered and checkboxes are created , but when i check one checkbox , all of them get checked.

1 Answer 1

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

Docs Input[checkbox]

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.