清除旧的Meteor订阅数据

时间:2015-08-25 15:15:44

标签: javascript meteor subscription

我有一个使用动态订阅的Meteor模板:

    var templateId = event.target.value;
    Meteor.subscribe('orderTemplateShow', templateId)

templateId会根据我选择的选择值进行更改:

    <p><label>Select Template</label></p>
    <select id="templateSelect" name="templateSelect">
        <option disabled selected> Select Template </option>
        {{#each orderTemplates}}
            <option value="{{this._id}}">{{this.templateName}}</option>
        {{/each}}
    </select>

选择模板后,模板的信息将呈现在模板上的表格中。

我的表:

 <table id="templateItems" class="table">
            <thead>
                <tr>
                    <th>Product Code</th>
                    <th>Brand</th>
                    <th>Description</th>
                    <th>Member Price</th>
                    <th>Quantity</th>
                    <th></th>
                </tr>
            </thead>
            <tbody>
                {{#each templateItems}}
                <tr>
                    <td>{{productCode}}</td>
                    <td>{{brand}}</td>
                    <td>{{description}}</td>
                    <td>${{memPrice}}</td>
                    <td><input type="text" id="qty" value ="{{quantity}}"></td>
                    <td><button class="btn btn-primary removeCartItem">Remove</button></td>
                </tr>
                {{/each}}
            </tbody>
        </table>
        </form>

但是,当我点击新模板时,除了我选择的新模板中的数据外,旧模板中的数据仍会显示在表格中。因此,有没有办法动态删除旧订阅中的数据?

谢谢!

1 个答案:

答案 0 :(得分:2)

订阅发布时,请保留订阅句柄。然后,当您想取消该订阅时,请调用.stop()取消订阅。

var subHandle = Meteor.subscribe('orderTemplateShow', templateId);
...
subHandle.stop()