2017-06-27 9 views
2

src/app.js wie folgt aussieht:vuejs: Filter in externer Datei?

import Vue from 'vue' 
import VueRouter from 'vue-router' 
import VueResource from 'vue-resource'; 

Vue.use(VueRouter); 
Vue.use(VueResource); 

const app = require("./app.vue"); 
const f = require('./filters'); 

const router = new VueRouter({ 
    routes: [ 
     {name: 'home', path: '/', component: home} 
    ] 
}); 

new Vue({ 
    router: router, 
    filters: f, 
    render: h => h(app) 
}).$mount("#app"); 

src/filters/index.js wie folgt aussieht:

webpack
module.exports = { 
    season: (value) => { 
     return 'foo'; 
    } 
} 

Mit ihm rollen, aber der Filter funktioniert nicht und Vue warnt mich wie so:

build.js:830 [Vue warn]: Failed to resolve filter: season 
(found in <Anonymous>) 

Wie kann ich meine Filter richtig in eine separate Datei einfügen?

Antwort

0

Sie registrieren diesen Filter nicht global, Sie registrieren ihn nur für die Verwendung in der Vorlage #app. Aber Ihre App rendert sofort die Komponente app.

Um die season Filter global verfügbar zu machen,

Vue.filter("season", f.season) 

in Ihrem app.js. verwenden

Oder Sie können die Filter in die Komponenten importieren, die sie verwenden.

+0

kann mich so etwas wie 'Vue.filter (f)' so importieren sie alle definierten Filter in dieser Datei, gegen das Hinzufügen eines 'Vue.filter()' Aufruf für jeden Filter ? – Wells

+0

Ich denke, ich könnte ein 'let Filter von f' machen und' Vue.filter' für jedes nennen, aber das scheint auch ineffizient zu sein ... – Wells

+0

Nein. Du müsstest mit deiner zweiten Option gehen und sie durchlaufen. Oder importiere Vue in deine filters.js und füge sie einfach dort hinzu, wenn du sie definierst. – Bert

0

Es ist in vuejs 1.0. Der Zweiwegefilter wurde aus vuejs 2.0 entfernt.

siehe git issue discuss und solution

+0

Während dies die Frage theoretisch beantworten könnte, [wäre es vorzuziehen] (// meta.stackoverflow.com/q/8259), die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Unter [hier] (https://meta.stackexchange.com/a/94027/285661) finden Sie Anweisungen, wie Sie * bessere * "linkbasierte" Antworten schreiben können. Vielen Dank! – GhostCat