1

这是我第一次使用 derbyjs,不知道是我愚蠢还是缺少文档。我有一个名为“书籍”的模型,我只是想显示书籍列表。

这是我的代码:

module.exports = {
    properties: {
        title: {type: 'string', minLength: 6},
        author: {type: 'integer', minimum: 0},
        image: {type: 'string'},
        status: {type: 'integer', minimum: 0, maximum: 1}, // 1 read, 0 wants to read
        comment: {type: 'string'}
    },
    required: ['title']
}

和架构列表

module.exports = {
    schemas: {
        auths: require('./model/auths'),
        products: require('./model/products'),
        books: require('./model/books')
    }
}

索引js

app.get('/shelf', function(page, model, params, next){
    model.subscribe('books', function(){
        var book = model.at('books.669374b5-8470-4f3a-a25f-0995a5a92a7a');
        model.ref('_page.book', book);
        page.render('home');
    });
});

我希望在视图中有“书”,所以我这样写 {{each}}

{{ each books as #b}}
    {{ #b.title }}
{{/each}}

但什么也没有出现,尽管这可以正常工作并按预期呈现

{{ _page.book.title }}

同样在网络控制台上,这工作正常并显示 3 本书

app.model.get('books')

注意:我通过 Web 控制台添加了书籍,类似这样

app.model.add('books', {title: 'something'})

在订阅功能中,我试图

var books = model.get('books');
model.ref('_page.books', books);

但是出现了一个错误

知道我做错了什么吗?我真的很喜欢 derbyjs 但这几天让我退缩了

4

1 回答 1

2

如果您希望页面自动更新,您应该使用 aref而不是 a get(),例如

app.get('/shelf', function(page, model, params, next) {
  var booksQuery = model.query('books', {});
  model.subscribe(booksQuery, function(err) {
    booksQuery.ref('_page.books');
    page.render('books');
  });
});

模板:

{{ each _page.books as #b}}
  {{ #b.title }}
{{/each}

除了官方的 Derby 文档,我发现derby-faq是一个很好的资源。

于 2014-12-10T19:25:45.097 回答