0

我在为我的 jQuery 插件发布数据时遇到问题。该插件是 autoform 添加包,其定义如下:

Products.attachSchema(new SimpleSchema({

  tooteNimetus:  {
    type: String,
    optional: true,
    autoform: {
      type: "selectize",
      options: function () {
        return productList
      }
    }

我需要定义这个产品列表。

当我将其定义为对象时:

productList = [{label: "AXPK Plus 4G60", value: 2001244}]

,它工作得很好

但是我需要从集合中获取productList,所以我这样定义它:

ProductMap = new Mongo.Collection("productMap");

ProductMap.attachSchema(new SimpleSchema({
    label: {
        type: String,
        label: "Toote nimetus"
    },
    value: {
        type: Number,
        label: "Toote kood"
    },
    miinimumTakistus: {
        type: Number,
        label: "Toote miinimum takistus",
        decimal: true
    }
}));

productList = ProductMap.find({}).fetch();

还有我的订阅和发布:在我的/服务器中:

Meteor.publish("productMap", function () {
    return ProductMap.find({});
});

lib/router 中的子目录:

Router.map(function () {
    this.route('insert', {
        path: '/insert',
        template: 'insertProduct',
        waitOn: function() {
            [
             Meteor.subscribe('productMap'),
             Meteor.subscribe('products')
             ];
        }
    });
});

所以问题是,目前它只有在我打开自动发布时才能找到我的 productList。如何正确发布/订阅我的:

productList = ProductMap.find({}).fetch();

当我打开新的私人会话并在我的浏览器窗口中进行刷新之前,当我打开自动发布时,我的插件也可以工作。刷新后它不起作用,我需要打开新的私人窗口。使用硬定义的对象/数组,插件在任何情况下都能很好地工作。

4

1 回答 1

0

您的问题可能是 waitOn 期望您返回数组(您忘记返回数组):

waitOn: function() {
        return [
             Meteor.subscribe('productMap'),
             Meteor.subscribe('products')
             ];
        }

几乎立即从您的项目中删除自动发布包。事情与添加的包一起工作,因为它发布了所有内容。

于 2015-04-14T07:04:00.053 回答