在渲染子视图之前等待收集数据

时间:2014-12-02 16:32:58

标签: javascript model ampersand.js

我正在构建一个应该是一个非常简单的项目,它基于Ampersand的初学者项目(当你第一次运行ampersand时)。我的添加页面有一个<select>元素,应该使用其他集合中的数据填充。我一直在将此观点与编辑页面视图进行比较,因为我认为它们非常相似,但我无法弄明白。

表单子视图有一个waitFor属性,但我不知道它期望的值是什么类型 - 我知道它应该是一个字符串 - 但该字符串代表什么? < / p>

下面你可以看到我正在尝试获取app.brandCollection并将其值设置为this.model这是正确的吗?我需要修改输出并传递通过数据到具有正确格式的ampersand-select-view元素;这是我的下一个问题。 如果有人有这方面的建议,我也会很感激。

var PageView = require('./base');
var templates = require('../templates');
var ProjectForm = require('../forms/addProjectForm');


module.exports = PageView.extend({
    pageTitle: 'add project',
    template: templates.pages.projectAdd,

    initialize: function () {
        var self = this;
        app.brandCollection.fetch({
            success : function(collection, resp) {
                console.log('SUCCESS: resp', resp);
                self.brands = resp;
            },
            error: function(collection, resp) {
                console.log('ERROR: resp', resp, options);

            }
        });
    },

    subviews: {
        form: {
            container: 'form',
            waitFor: 'brands',

            prepareView: function (el) {    
                return new ProjectForm({
                    el: el,
                    submitCallback: function (data) {
                        app.projectCollection.create(data, {
                            wait: true,
                            success: function () {
                                app.navigate('/');
                                app.projectCollection.fetch();
                            }
                        });
                    }
                });
            }
        }
    }
});

这只是添加页面视图,但我认为这就是所需要的。

1 个答案:

答案 0 :(得分:0)

  

表单子视图有一个waitFor属性,但我不知道它期望的值是什么类型 - 我知道它应该是一个字符串 - 但该字符串代表什么?

此字符串表示具有固定this上下文的当前对象中的路径。在您的示例中,您waitFor: 'brands'只有PageView.brands,因为PageViewthis上下文。如果您有model.some.attribute,则表示此字符串代表PageView.model.some.attribute。它是遍历物体的便捷方式。

很少有信息可以回答你的后一个问题。您以什么形式检索数据?你以后想做什么? 如果你能在https://gitter.im/AmpersandJS/AmpersandJS上ping我们,那就快得多了:)