2016-04-13 13 views
0

Şu anda yalnızca tanımı doğrudan görüntünün altında örneklendiriyorum, ancak bunu yapmanın daha iyi bir yolu olup olmadığını merak ediyordum?Omurgada kendi kendini oluşturma görünümleri nasıl oluşturulur?

var BVApp = Backbone.View.extend({ 
    Name: 'BVApp', 
    // do chonka stuff 
}); 
$A.Class.add(new BVApp()); 
+0

hoşunuza ve neden ne eklemek misiniz? Omurga nesneleri 'new' kullanılarak başlatılmalıdır -' new' uzaklaşmayı bekliyor musunuz? –

+0

Eh, muhtemelen bir tane için kod birkaç satırda otomatik olarak başlatır 'Backbone.ViewAuto' adlı bir sarıcı yazabilirsiniz. –

+0

Dört chars 'new' yazmanız için çok mu fazla, yoksa niyetiniz nedir? Not: "Yeni" den daha kısa olan "örnek" için genel bir yol göremiyorum. Yani, gerçekten bir kod uzunluğu meselesi ise: rahatsız etme. –

cevap

0

bir "kendini başlatmasını görünümünü" oluşturmak için bir yolu yoktur haddi zatında (nasılsa!, Yere örneğini zorunda olduğundan), ancak ne istediğinizi elde etmek için bir yol olabilir.

$A.Class.addInstantiated = function (ObjectConstructor) { 
    this.add(new ObjectConstructor()); 
}; 
  • ne istediğinizi bir ise:

    1. görünümünüzü başlatır ve ekler bir yöntem oluşturun: belirli hedefler bağlı Ben açıkça nesne örneğini zorunda etrafında almak için iki yol bkz

      define([], function() { 
          function Foo(a) { 
           // ...does stuff... 
          } 
      
          return new Foo(); 
      }); 
      

      Bu şekilde sizin modülün her kullanım: tekil ve RequireJS gibi bir modül yükleyici kullanıyorsanız, o zaman aslında sadece Oluşturulmuş bir nesne döndürebilir aynı, anlık nesne olacak. Bu yaklaşımın bir dezavantajı, özellikle de test edilebilir olmamasıdır, ancak bunu, bir modülde asılsız modelinize sahip olarak alıp, ikinci bir modülde bir tekil olarak başlatabilirsiniz. Örn .:

      define([], function() { 
          function Foo(a) { 
           // ...does stuff... 
          } 
      
          return Foo; 
      }); 
      
      define(['foo'], function (Foo) { 
          return new Foo(); 
      }); 
      
  • İlgili konular