2013-04-08 2 views
1

Я пытаюсь работать с позвоночником, но мне не хватает базовых понятий, потому что это первый JavaScript MVVM Framework Я пытаюсь.Основные понятия базовой архитектуры архитектуры

Я посмотрел to some guide, но я думаю, что все еще не хватает, как его следует использовать.

Я покажу мое приложение, чтобы получить какое-то направление:

// 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 Мне нужно создать базовое приложение, например, Search.Views.Product и расширить его на вид из-за ситуации с ProductView.

Итак, в моем примере с методом render используйте его с поведением по умолчанию в Search.js и с конкретным поведением в моем представлении html.

После некоторой попытки кажется, что ProductModel и ProductView - это всего лишь экземпляры, и вы должны сделать весь код в Search.js без создания конкретных действий.

Я понимаю, что таким образом сделать все проще, чтобы быть в курсе последних событий, но что делать, если я использую это приложение в разных взглядах и относительных местах?

Я уверен, что мне не хватает способа его использования.

В this guides в HTML-коде отсутствует код, поэтому я должен написать весь код в приложении без вставки конкретных ситуаций?

Если нет, то как я должен написать код для конкретных ситуаций вида html?

Разрешено ли переопределять методы моего базового приложения?

ответ

0

В принципе, вы должны думать о различных частей, как это:

  • шаблоны указывают на то, что должны отображаться и где. Они являются мошенническими в HTML
  • представления определяют, как дисплей должен реагировать на изменения в среде (щелчки пользователя, изменение данных). Они написаны в javascript
  • модели и коллекции содержат данные и упрощают работу с ними. Например, если модель отображается в представлении, вы можете показать, что представление обновляется при изменении данных модели
  • , тогда у вас есть код javascript, который будет создавать новые экземпляры представлений с соответствующей моделью/коллекцией и отображать их в браузер

Я пишу книгу на Marionette.js, которая является основой для облегчения работы с Backbone. Первые главы доступны в свободном образце и более подробно объясняют приведенные выше пункты: http://samples.leanpub.com/marionette-gentle-introduction-sample.pdf

Смежные вопросы