SORU
28 Mart 2012, ÇARŞAMBA


Nasıl AMD (require.js)kullanırken Backbone.js içinde önyüklenen modelleri yüklemek için

Backbone.js belgeleri yükleme önyüklenen modelleri bu yol önerir:

<script>
var Accounts = new Backbone.Collection;
Accounts.reset(<%= @accounts.to_json %>);
var Projects = new Backbone.Collection;
Projects.reset(<%= @projects.to_json(:collaborators => true) %>);
</script>

Ama bu kullanılan bir kalıptırYaklaşım (require.js kullanarak) AMD

Mümkün olan tek çözüm bildirmektirglobal değişken JSON veri depolamave bu değişken daha sonra ilgili başlatma yöntemleri kullanın.

Bir yokturdaha iyi bir yolubu (global olmadan) yapmak için?

CEVAP
23 NİSAN 2012, PAZARTESİ


Bu genel ad kirletmez bir şekilde veri bootstrap. Yerine require.js sadece kullanır. Ayrıca şablon içinde ilk uygulama yapılandırma değişkenleri dayalı sağlamaya yardımcı olur.

Oluşturulan sayfa içinde

<script src="require.js"></script>
<script>
define('config', function() {
  return {
    bootstrappedAccounts: <%= @accounts.to_json %>,
    bootstrappedProjects: <%= @projects.to_json(:collaborators => true) %>
  };
});
</script>
<script src="app.js"></script>

globals.js

Bu yapılandırma için dosya teslim eder ve kendisi döndürülen verileri kullanarak genişletir

define([
  'config',
  'underscore'
], function(config) {

  var globals = {
  };
  _.extend(globals, config);
  return globals;

});

config.js

Bu dosya Eğer isterseniz app eğer Sayfa config tanımlanmış varsa ne olursa olsun yüklemek mümkün olabilir.

define(function() {
  // empty array for cases where `config` is not defined in-page
  return {};
});

app.js

require([
  'globals',
  'underscore',
  'backbone'
], function(globals) {

  if (globals.bootstrappedAccounts) {
    var accounts = new Backbone.Collection(globals.bootstrappedAccounts);
  }
  if (globals.bootstrappedProjects) {
    var projects = new Backbone.Collection(globals.bootstrappedProjects);
  }

});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bratayley

    Bratayley

    30 Aralık 2010
  • HSmasteryoda .

    HSmasteryoda

    22 Ocak 2010
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013