我正在尝试使用骨干,但我错过了它的基本概念,因为这是我第一次JavaScript MVVM Framework
尝试。
我已经查看了一些指南,但我认为我仍然错过了应该如何使用它。
我将展示我的应用以获得一些方向:
// Search.js
var Search = {
Models: {},
Collections: {},
Views: {},
Templates:{}
};
Search.Models.Product = Backbone.Model.extend({
defaults: search.product.defaults || {},
toUrl:function (url) {
// an example method
return url.replace(" ", "-").toLowerCase();
},
initialize:function () {
console.log("initialize Search.Models.Product");
}
});
Search.Views.Product = Backbone.View.extend({
initialize:function () {
console.log("initialize Search.Views.Product");
},
render:function (response) {
console.log("render Search.Views.Product");
console.log(this.model.toJSON());
// do default behavior here
}
});
Search.Models.Manufacturer = Backbone.Model.etc...
Search.Views.Manufacturer = Backbone.View.etc...
然后在我的网络应用程序视图中:
<head>
<script src="js/jquery.min.js"></script>
<script src="js/underscore.min.js"></script>
<script src="js/backbone/backbone.min.js"></script>
<script src="js/backbone/Search.js"></script>
</head>
<body>
<script>
var search = {};
search.product = {};
search.product.defaults = {
id:0,
container:"#search-results",
type:"product",
text:"<?php echo __('No result');?>",
image:"<?php echo $this->webroot;?>files/product/default.png"
};
$(function(){
var ProductModel = new Search.Models.Product();
var ProductView = new Search.Views.Product({
model:ProductModel,
template:$("#results-product-template"),
render:function (response) {
// do specific view behavior here if needed
console.log('render ProductView override Search.Views.Product');
}
});
function onServerResponse (ajax_data) {
// let's assume there is some callback set for onServerResponse method
ProductView.render(ajax_data);
}
});
</script>
</body>
我想我错过了 Backbone 新实例的用途,我认为Search.js
我应该使用 Backbone 构建基础应用程序Search.Views.Product
,并根据ProductView
.
因此,在我的示例中,使用render
方法,将其与Search.js
我的 html 视图中的默认行为和特定行为一起使用。
经过一番尝试,它似乎只是实例,您必须在不创建特定行为的情况下完成所有ProductModel
代码。ProductView
Search.js
我知道这样做可以使所有内容最容易保持最新状态,但是如果我在不同的视图和相关位置使用此应用程序怎么办?
我确定我错过了它应该使用的方式。
在本指南中,没有在 html 视图中使用代码,所以我应该在应用程序中编写所有代码而不插入特定情况吗?
如果没有,我应该如何针对html视图的特定情况编写代码?
是否允许覆盖我的 Backbone 应用程序的方法?