如何更改模型并从另一个视图渲染 Marionette 视图
How to change model and render Marionette view from another view
我在 Marionette 中有 LayoutView。只给 onRender 方法:
onRender: function() {
this.showChildView("content", new CanvasView({ model: this.model }));
this.showChildView("library", new LibraryView());
this.showChildView("properties", new PropertiesView({ model: this.model }));
}
内容中有一个模型,其中包含 svg 元素(例如直线、椭圆...)及其属性。我需要在 PropertiesView 中更改模型。例如,我需要更改线宽或颜色并重新渲染 "content" 子视图。我怎么能这样做?
PropertiesView 由输入集组成。例如:
Line color: <input type="text" id="id_2" name="style" value= <%= lineColor %>>
您可以使用 Backbone event system。每次您为模型设置任何内容时,都会触发 change
事件。
在 PropertiesView 中,您可以为用户交互添加一些事件。在每个输入上将其内容设置为模型:
ui: {
'style': 'input[name=style]'
},
events: {
'input @ui.style': 'onInputStyle'
},
onInputStyle: function(){
this.model.set('style', this.ui.style.val());
}
并在 CanvasView 中订阅它们并相应地更改您的视图:
modelEvents: {
'change:style': 'onChangeStyle'
},
onChangeStyle: function(){
this.$el.attr('style', this.model.get('style'));
}
我在 Marionette 中有 LayoutView。只给 onRender 方法:
onRender: function() {
this.showChildView("content", new CanvasView({ model: this.model }));
this.showChildView("library", new LibraryView());
this.showChildView("properties", new PropertiesView({ model: this.model }));
}
内容中有一个模型,其中包含 svg 元素(例如直线、椭圆...)及其属性。我需要在 PropertiesView 中更改模型。例如,我需要更改线宽或颜色并重新渲染 "content" 子视图。我怎么能这样做? PropertiesView 由输入集组成。例如:
Line color: <input type="text" id="id_2" name="style" value= <%= lineColor %>>
您可以使用 Backbone event system。每次您为模型设置任何内容时,都会触发 change
事件。
在 PropertiesView 中,您可以为用户交互添加一些事件。在每个输入上将其内容设置为模型:
ui: {
'style': 'input[name=style]'
},
events: {
'input @ui.style': 'onInputStyle'
},
onInputStyle: function(){
this.model.set('style', this.ui.style.val());
}
并在 CanvasView 中订阅它们并相应地更改您的视图:
modelEvents: {
'change:style': 'onChangeStyle'
},
onChangeStyle: function(){
this.$el.attr('style', this.model.get('style'));
}