JS框架如何将模型绑定到视图
How do JS frameworks bind model to a view?
我最近一直在研究可怕的东西.. :)可怕的东西是流行js frameworks
的来源,如backbone.js
,angular.js
,vue.js
等。
我将以Backbone为例。我试图弄清楚模型是如何附加到视图的?
这是代码,如果有人能指出发生这种情况的部分,那就太棒了!https://github.com/jashkenas/backbone/blob/master/backbone.js
实际上,我不明白的部分是任何地方都没有调用innerHTML
,那么元素是如何用数据填充的呢?
Backbone 不是 Angular,它不会为你绑定模型到 html,它实际上也不会为你渲染视图,你必须在你的视图中实现渲染方法,并在你认为合适的时候调用它们。事实上,我认为来自 2 路绑定框架的开发人员可能会感到困惑。Backbone就是将所有控制权交给开发人员,但您必须自己完成所有工作。
最小模型 =>视图流示例是这样的
var MyModel = Backbone.Model.extend({
defaults: {
test: 'test',
},
initialize: function (options) {
console.log(this.get('test'));
},
});
var MyView = Backbone.View.extend({
el: '#your-el',
initialize: function (options) {
this.template = _.template('<div><%= test %></div>');
this.listenTo(this.model, 'change', this.render);
},
render: function () {
// rendering happens here, innerHTML, $.html(), whichever you prefer
// and you can pass model data as this.model.toJSON()
// or you can pass an object with data
// also, you probably will need a templating library or use
// bundled underscore _.template(html, data) method to render blocks of html
// for example, with underscore
this.$el.html(this.template(this.model.toJSON()));
return this; // for chaining
},
});
var myModel = new MyModel();
var myView = new MyView({
model: myModel,
});
myModel.set('test', 'newValue'); // view should render after this call
在 backbonejs.org 查看内置事件列表。
相关文章:
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 取消绑定主干视图事件
- Backbone.js将模型绑定到视图时出错
- 使用knockout.js将数组绑定到视图模型
- 如何在angularjs中检查Kendo树视图数据绑定事件
- Ember.js/HHandlebars:使用{{view}}助手渲染的视图不绑定属性
- Angular $scope更新、导航和 $scope.$apply() 后不绑定到视图
- 在 AngularJS 中将数据从视图绑定到控制器
- Emberjs - 将参数动态绑定到视图
- 挖空、视图模型位于其他对象和数据绑定中
- 如何将经度/经度值绑定到挖空视图模型方法
- 主干.js绑定到集合“添加”呈现视图两次
- 对视图上函数的角度绑定导致对数据服务的无限调用
- 如何将文件夹中包含的控制器动态绑定到angularjs中的视图
- 正在将逻辑从视图移动到自定义绑定
- 如何在数据绑定视图中模板化If Else结构
- 显示具有 MVC 数据绑定视图模型 ASP.NET JQuery 对话框的最佳方式
- 带有 JavaScript 挖空的绑定视图
- 如何在不重新绘制绑定视图的情况下重新加载angularjs范围数据
- React和Flux -如何绑定视图来存储数据