SORU
14 HAZİRAN 2011, Salı


Backbone.js ve iç içe geçmiş bir nesne almak öznitelik kümesi

Backbone.js hakkında basit bir sorum var'olsunveayarlayınfonksiyonlar.

1) aşağıdaki kod İle nasıl yapabilirim 'ya da' set 'obj1.myAttribute1 doğrudan?

Başka bir soru:

2) Modeli hariçvarsayılanlarınesne, nerede benim modelin diğer özellikleri, Omurga get ve set yöntemleri ile erişilebilir böyle bir beyan gerekir mi?

var MyModel = Backbone.Model.extend({
    defaults: {
        obj1 : {
            "myAttribute1" : false,
            "myAttribute2" : true,
        }
    }
})

var MyView = Backbone.View.extend({
    myFunc: function(){
        console.log(this.model.get("obj1"));
        //returns the obj1 object
        //but how do I get obj1.myAttribute1 directly so that it returns false?
    }
});

Yapabileceğimi biliyorum:

this.model.get("obj1").myAttribute1;

ama bu iyi bir uygulamadır?

CEVAP
14 HAZİRAN 2011, Salı


this.model.get("obj1").myAttribute1 iyi ise, o zaman set için de benzer bir şey yapmak için cazip olabilir, çünkü biraz sorunlu, yani

this.model.get("obj1").myAttribute1 = true;

Ama eğer bunu yaparsanız, olayları veya doğrulama değiştirmek gibi myAttribute1, Omurga modellerinin yararları almazsınız.

Daha iyi bir çözüm asla POJSOs yuva olacaktır ("düz eski JavaScript nesneleri") modelleri ve model sınıfları yerine yuva özel. Bu gibi bir şey olurdu:

var Obj = Backbone.Model.extend({
    defaults: {
        myAttribute1: false,
        myAttribute2: true
    }
});

var MyModel = Backbone.Model.extend({
    initialize: function () {
        this.set("obj1", new Obj());
    }
});

Sonra erişim kodu olur

var x = this.model.get("obj1").get("myAttribute1");

ama daha da önemlisi ayarı kod olurdu

this.model.get("obj1").set({ myAttribute1: true });

uygun değiştirme olayları ve yangın gibi olacak. Burada örnek çalışma: http://jsfiddle.net/g3U7j/

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Easy Learn Tutorial

    Easy Learn T

    10 Kasım 2012
  • manadude21

    manadude21

    11 Mart 2008
  • Philip DeFranco

    Philip DeFra

    16 EYLÜL 2006