2016-06-28 9 views
0

Die folgenden Codes geben Uncaught TypeError zurück: Eigenschaft 'checked' von null kann nicht gesetzt werden. Wie ist der richtige Weg zum Kontrollkästchen "Programmatic Set"?Dojo verwenden, um programmierte Kontrollkästchen zu aktivieren

 array.forEach(this._getAllCheckBoxIDs(), function(item){ 
      dom.byId(item).checked = true; 
     }, this); 
+0

Das ist richtig, aber 'dom.byId (Pos)' 'kehrt null', so dass ich wette,' this._getAllCheckBoxIDs () 'gibt nicht zurück, was Sie erwarten ... Mit einem jfiddle konnten wir eine bessere Hilfe zur Verfügung stellen – ben

+0

bitte können Sie den Inhalt der _getAllCheckBoxIDs() Funktion teilen! –

+0

Schätzen Sie Ihre Antworten. Es stellte sich heraus, dass die Checkboxen beim Aufruf von _getAllCheckBoxIDs() nicht erstellt wurden. –

Antwort

0

Nun, wenn Sie Sie die Sammlungen von Dojo Kontrollkästchen haben, dann würde ich vorschlagen, Sie registry.byId statt dojo.byId zu verwenden, da Sie Checkbox Dojo-Widget müssen zusammen mit seinem DOMNode sein Attribut zu aktualisieren.

Dojo Klassenname: -

dijit/registry 

Ex: -

// require registry class first 
array.forEach(this._getAllCheckBoxIDs(), function(item){ 
    registry.byId(item).set("checked", true); 
}, this); 

für mehr Details please click here...

der Hoffnung, das wird Ihnen helfen :)

+0

stellen Sie sicher, dass "this._getAllCheckBoxIDs()" nur ID Dojo Checkboxen enthält. Fühlen Sie sich frei, Ihre Abfragen zu schießen, wenn obige Lösungen nicht funktioniert ... –

+1

Um den richtigen Lebenszyklus eines Dijit-Widget zu verwenden, würde ich vorschlagen stattdessen widget.set ('checked', true); – GibboK

+0

yup .. Gibbok .. (y) –

0

T Das folgende Beispiel zeigt ein programmatisches Beispiel zum Festlegen der Eigenschaft checked für ein Widget checkbox.

Das Skript ruft die Referenzen Ihrer Kontrollkästchen unter Verwendung von dijit/registry entgegen, um das DOM abzufragen.

Statt eine Eigenschaft direkt für Ihr Widget wie dies der Einstellung:

dom.byId(item).checked = true; 

Ich würde vorschlagen, einen Setter wie mit:

widgetReference.set('checked', true); 

Dies wird das Widget Lebenszyklus ermöglichen ordnungsgemäß funktioniert.

Live-Beispiel hier:

https://jsfiddle.net/femtf4uh/

require(["dijit/form/CheckBox", "dijit/registry", "dijit/form/Button", "dojo/domReady!"], function(CheckBox, registry, Button) { 
    new CheckBox({ 
    id: "checkBox0", 
    name: "checkBox0", 
    value: "option0", 
    checked: false, 
    onChange: function(event) { 

    } 
    }, "checkBox0").startup(); 
    new CheckBox({ 
    id: "checkBox1", 
    name: "checkBox1", 
    value: "option1", 
    checked: false, 
    onChange: function(event) { 

    } 
    }, "checkBox1").startup(); 

    var markCheckAll = function() { 
    registry.toArray().forEach(function(widget) { 
     if (widget.type === 'checkbox'){ 
     widget.set('checked', true); 
     } 
    }); 
    }; 
    markCheckAll(); 

}); 

<input id="checkBox0" /> 
<label for="checkBox">Option 0</label> 
<br> 
<input id="checkBox1" /> 
<label for="checkBox">Option 1</label> 
<br> 
Verwandte Themen