Zend Dojo ComboBox dojo.data bulmak değil

1 Cevap php

Aşağıdaki kod ile, Zend çalışan bir dojo combobox almak çalışıyorum:

$url = '/db/autocomplete/table/suburbs';
$element = new Zend_Dojo_Form_Element_ComboBox('suburb1');
$element->setStoreId('suburbsStore');
$element->setStoreType('dojo.data.ItemFileReadStore');
$element->setStoreParams(array('url' => $url));
$element->setDijitParam('searchAttr', 'name');

ve çıkış (Ben bunu biraz biçimlendirdiğimiz) bu javascript:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.2.0/dojo/dojo.xd.js"></script>

<script type="text/javascript">//<![CDATA[
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("dijit.form.ComboBox");
dojo.require("dojo.parser");
dojo.addOnLoad(function() {
    dojo.forEach(zendDijits, function(info) {
        var n = dojo.byId(info.id);
        if (null != n) {
            dojo.attr(n, dojo.mixin({ id: info.id }, info.params));
        }
    });
    dojo.parser.parse();
});
var suburbsStore = new dojo.data.ItemFileReadStore({"url":"\/db\/autocomplete\/table\/suburbs"});
var zendDijits = [
    {"id":"suburb1","params":{
        "store":"suburbsStore",
        "searchAttr":"name",
        "dojoType":"dijit.form.ComboBox"}
    },
    {"id":"suburb2","params":{
        "store":"suburbsStore",
        "searchAttr":"name",
        "dojoType":"dijit.form.ComboBox"}
    }
];
//]]></script>

ve (kaldırıldı yabancı malzeme ile) bu HTML:

<input options="" id="suburb1" name="suburb1" value="" type="text" />
<input options="" id="suburb2" name="suburb2" value="" type="text" />
<input type="submit" />

ve ben alıyorum hata dojo.data is undefined var suburbsStore = new dojo.data.ItemFileReadStore(...) hattı üzerinde. Şüphesiz bu çağrı dojo.require("dojo.data.ItemFileReadStore"); sonra ve çok ince olmalı?! Ama açıkçası ben bir şey eksik.

Teşekkür ederiz!

1 Cevap

Çapraz etki dojosunu (sizin durumunuzda Google CDN) kullanırken, dojo.require uyumsuz çalışır, bu yüzden sorun aslında mevcut önce ItemFileReadStore örneğini oluşturmak için çalışıyoruz olduğunu düşünüyorum. Tüm modülleri mevcut olduğunda ateş garantilidir, çünkü dojo.addOnLoad işleyicisi kodunuzu (var suburbsStore = new dojo.data.ItemFileReadStore ...) hareket etmelidir. Sen normal ve xdomain yükleyici arasındaki farklar hakkında okuyabilirsiniz here.