2

我希望能够从用户列表中选择多个用户。

我是用户collection2simple-schema并且autoform

我想为此生成一个简单的 quickForm 。这是我的简单模式:

Schemas.Item = new SimpleSchema({
    name: {
        type: String,
        label: "Name",
        max: 100
    },
    userIds: {
        type: [String],
        regEx: SimpleSchema.RegEx.Id
    }
});

查看autoform docs,我注意到我想要一个选择视图,所以我需要传递选项。

我希望能够在我的架构中做到这一点!

    userIds: {
        type: [String],
        regEx: SimpleSchema.RegEx.Id
        options: function() {
            // return users with {value:_id, label:username}
        }
    }

否则,我必须生成一个带有 quickFormFields 的模板才能传入选项。

只是为了堆积东西,不应该有任何重复的用户ID......

谢谢你的帮助

4

1 回答 1

5

可能您已经找到了答案,但也许有人会发现它很有用。一旦你选择了用户,我有很多不同的东西要指定,这就是为什么我的用户类型是 [Object]。在你的情况下,你可以修改它。最重要的部分是 autoform.options 方法,它似乎是您正在寻找的部分。

    users: {
        type: [Object]
    },
    "users.$.id": {
        // you can use your own type, e.g. SimpleSchema.RegEx.Id, as I am using custom Schema for accounts
        type:  Schemas.Account._id,
        label: 'Select user',
        autoform: {
            options: function () {
                var options = [];
                Meteor.users.find().forEach(function (element) {
                    options.push({
                        label: element.username, value: element._id
                    })
                });
                return options;
            }
        }
    }

上面的片段将为您提供所有用户的列表,以便您可以轻松地从下拉列表中选择它们。

请记住添加适当的发布方法以使其正常工作,否则您将始终只获得当前记录的一个。

于 2014-08-02T19:18:43.717 回答