2015-11-09 1 views
0

Я создал пользовательский атрибут для управления жизненным циклом элемента materilaize select:материализовать-CSS JavaScript функции не найден в проекте Aurelia

import {customAttribute} from 'aurelia-templating'; 
import {inject} from 'aurelia-dependency-injection'; 

@customAttribute('material-select') 
@inject(Element) 
export class MaterialSelect { 
    element: Element = null; 

    constructor(element) { 
     this.element = element; 
    } 

    attached() { 
     console.log("ATTACHED"); 
     console.log(`The attached element is: ${this.element}`); 
     $(this.element).material_select(); 
    } 

    detached() { 
     console.log("DETACHED"); 
     $(this.element).material_select('destroy'); 
    } 
} 

Кроме того, я установил материализовать-CSS с:

jspm install npm:materialize-css 

... и я импортировал materilialize в main.ts с:

import materialize from 'materialize-css'; 

Но всякий раз, когда элемент с атрибутом material-select пытается загрузить Я получаю этот консольный вывод:

ATTACHED 
The attached element is: [object HTMLSelectElement] 
Uncaught TypeError: $(...).material_select is not a function 

Как получить материализовать-CSS JavaScript функции, чтобы быть признанным в пределах Aurelia?

+1

В материализовать расслоение плотной компоненты (особенно выберите) являются сложно интегрировать с привязкой данных. Есть примеры [здесь] (http://jdanyow.github.io/aurelia-breeze-northwind). Они могут использовать некоторые рефакторинги, но должны дать вам некоторые идеи. –

+0

Northwind Github [repo] (https://github.com/jdanyow/aurelia-breeze-northwind) выглядит очень похоже на то, что я сделал: materialize - зависимость jspm, импортированная в 'main.js', а затем используемый. Я вижу только 2 отличия: Northwind использует более старую версию materilize, а Northwind - не проект машинописного текста. Хотя я не понимаю, почему эти различия могут вызвать проблему. – asemahle

+0

Я написал блог об интеграции сторонних библиотек в aurelia, которые могут вас заинтересовать. Смотрите: http://davismj.me/blog/aurelia-drag-and-drop/ –

ответ

0

Удаление версии NPM пакета и установить версию GitHub вместо:

jspm uninstall npm:materialize-css 
jspm install github:Dogfalo/materialize 

Установив GitHub версию package override будет использоваться, и пакет будет установлен с правильными зависимостями (Jquery + CSS) ,

Тогда вы будете в состоянии сделать это:

import $ from 'Dogfalo/materialize'; 

$('.foo').material_select(); 

Примечание: вышеуказанные шаги не будут работать до тех пор, this PR слито

+0

Запуск 'jspm install github: Dogfalo/materialize' вытаскивает пустые каталоги. Единственный файл в 'jspm_packages/github/Dogfalo' -' .jspm-hash'. Остальные - это пустые папки. Так оно и должно быть? – asemahle

+2

выглядит как переопределение пакета. Я создал PR для реестра jspm. Будет обновлен мой ответ, когда он будет принят. Не нужно долго –