我想知道是否有人可以帮助找到这个案例中的错误。文本未被定义”在第6行app.js中:
((__t=( text ))==null?'':_.escape(__t))+
驱动程序.js:
var Marionette = require('backbone.marionette');
var TodoView = require('./views/layout');
var initialData = {
items: [
{assignee: 'Scott', text: 'Write a book about Marionette'},
{assignee: 'Andrew', text: 'Do some coding'}
]
};
var App = new Marionette.Application({
onStart: function(options) {
var todo = new TodoView({
collection: new Backbone.Collection(options.initialData.items),
model: new ToDoModel()
});
todo.render();
todo.triggerMethod('show');
}
});
App.start({initialData: initialData});
视图/布局.js
var Backbone = require('backbone');
var Marionette = require('backbone.marionette');
var ToDoModel = require('../models/todo');
var FormView = require('./form');
var ListView = require('./list');
var Layout = Marionette.View.extend({
el: '#app-hook',
template: require('../templates/layout.html'),
regions: {
form: '.form',
list: '.list'
},
collectionEvents: {
add: 'itemAdded'
},
onShow: function() {
var formView = new FormView({model: this.model});
var listView = new ListView({collection: this.collection});
this.showChildView('form', formView);
this.showChildView('list', listView);
},
onChildviewAddTodoItem: function(child) {
this.model.set({
assignee: child.ui.assignee.val(),
text: child.ui.text.val()
}, {validate: true});
var items = this.model.pick('assignee', 'text');
this.collection.add(items);
},
itemAdded: function() {
this.model.set({
assignee: '',
text: ''
});
}
});
module.exports = Layout;
待办事项.html
<%- item.text %> — <%- item.assignee %>
我能解释为什么文本没有定义吗?
3条答案
按热度按时间piah890a1#
检查你的ToDoModel是否有打字错误, Backbone.js 模型字段应该是“默认值”而不是“默认值,”而解析模板 puppet 视图时会查找“默认值”字段:
https://marionettejs.com/docs/master/template.html#rendering-a-model
因此ToDoModel代码应该如下所示:
hzbexzde2#
您应该查看Marionnette的ItemView文档,该文档解释了如何使用自定义数据呈现模板。
请注意,使用模板函数允许将自定义参数传递到
.template
函数中,并允许对如何调用.template
函数进行更多控制。你现在提供的代码我帮不上忙。
w3nuxt5m3#
在将上下文传递给“template”之前,Marionette调用“serializeModel”。因此,如果您有一个 Backbone.js .model,如
您的模板将收到
我曾经处理过车把,但没有下划线。在模板中,
{{this.text}}
和{{this.assignee}}
就像一个符咒。所以,尝试用this.text
或text
代替item.text
,看看是否有效