Как структурировать нокаут-приложение JQery - PullRequest
1 голос
/ 31 января 2012

** обновленный

Я использую knockoutjs с jquery для создания приложения.

Поскольку я использую jquery, мне нужно обернуть нокаутом в функцию jquery. Это хорошо, за исключением того, что через приложение я повторно использую одни и те же объекты / функции для разных страниц. Поскольку объект содержит ссылки на нокаут, я не могу поместить их в глобальный файл, что означает, что у меня много повторений, что сильно увеличивает объем кода и делает его совершенно неуправляемым.

Итак

//global file

//this is fine because it dose not reference knockout 
var global_cust = function(){
   this.name: "dave";
   this.isAwkward: true; 
}

//this is not fine because it references knockout 
var knockout_global_customer = function(properties){
  this.name: ko.observable(properties.name? properties.name: "unknown"),
  this.isAwkward: ko.observable(properties.isAwkward? properties.isAwkward: true),   
}

//page 1 

(function($){

//i have to include the customer in every page of aplplication that uses it. I would like this in a global file or someway of Precompiling it so don't have to include it in every page - a bit like php include but for JS    
var customer = function(properties){
  this.name: ko.observable(properties.name? properties.name: "unknown"),
  this.isAwkward: ko.observable(properties.isAwkward? properties.isAwkward: true),   
}

var viewModel = {
  currentCustomer: ko.observable(new customer()),
  globalCustomer: ko.observable(new global_cust()),
}

ko.applyBindings(viewModel);

})(jQuery);

так или иначе, или инструменты, которые предварительно обрабатывают файлы, чтобы мне не приходилось повторять одни и те же объекты / функции на каждой странице

Спасибо

Ответы [ 2 ]

1 голос
/ 31 января 2012

Для этой цели можно использовать переменную window .

window.customerModel = viewModel;

будет доступно по всему миру.

0 голосов
/ 31 января 2012

Мне нравится ответ оконной переменной и думаю, что он подходит вам лучше всего.Но для функции, подобной php include, проверьте функцию jQuery.getScript: http://api.jquery.com/jQuery.getScript/

...