auf gegeben Poisson Ihre js Datei registrieren
$this->registerJsFile('path/to/file.js', ['position' => \yii\web\View::POS_END]);
Das erste Argument ist der tatsächliche JS-Code, den wir in die Seite einfügen möchten. Das zweite Argument legt fest, wo das Skript in die Seite eingefügt werden soll. Mögliche Werte sind:
Ansicht :: POS_HEAD für Kopfteil.
Ansicht :: POS_BEGIN für rechts nach dem Öffnen.
Ansicht :: POS_END für rechts vor dem Schließen.
Ansicht :: POS_READY zum Ausführen von Code auf Dokument bereit Ereignis.
Dadurch wird jQuery automatisch registriert. View :: POS_LOAD zum Ausführen von Code beim Laden eines Dokuments. Dadurch wird jQuery automatisch registriert. Das letzte Argument ist eine eindeutige Skript-ID, die verwendet wird, um einen Codeblock zu identifizieren und einen vorhandenen mit der gleichen ID zu ersetzen, anstatt einen neuen Code hinzuzufügen. Wenn Sie es nicht angeben, wird der JS-Code selbst als ID verwendet.
Ein externes Skript kann wie folgt ergänzt:
$this->registerJsFile('http://example.com/js/main.js', ['depends' => [\yii\web\JqueryAsset::className()]]);
Die Argumente für registerJsFile() für registerCssFile denen ähnlich sind(). Im obigen Beispiel registrieren wir die Datei main.js mit der Abhängigkeit von JqueryAsset. Dies bedeutet, dass die Datei main.js NACH jquery.js hinzugefügt wird. Ohne diese Abhängigkeitsspezifikation wäre die relative Reihenfolge zwischen main.js und jquery.js nicht definiert.
Ich registriere diese Dateien, weil ich möchte, dass die Datei nur in einer bestimmten Ansicht verwendet wird und in anderen Ansichten, die ich möchte Verwenden Sie andere JS-Dateien.Ist das mit Vermögenswerten möglich? Ich habe nicht verstanden, ob es eine Möglichkeit gibt, Asset Manager anzuweisen, diese Datei nur in der A-Ansicht zu verwenden, und diese Datei nur in der B-Ansicht zum Beispiel – David
. Sie müssten ein bestimmtes Asset erstellen, um in dieser bestimmten Ansicht registriert zu werden. Es ist zwar möglich, eine neue Datei basierend auf bestimmten Bedingungen (wie in der Dokumentation angegeben) einzufügen, indem Sie die Methode 'init()' der Asset-Bundle-Klasse implementieren, dies hängt jedoch von Fall zu Fall ab. –