Я работаю над этим некоторое время, и я не могу заставить это работать, я готов выкинуть компьютер из окна!дизайн бутстрапа и Aurelia
Использование скелет-навигатора Aurelia для установки bootstrap-material-desing с использованием jstpm install bootstrap-material. Затем добавьте его в качестве импорта ниже начальной загрузки в вашем app.js
import 'bootstrap';
import 'bootstrap/css/bootstrap.css!';
import 'bootstrap-material';
@inject(Router)
export class App {
CSS-код и JS импорт хорошо, но при инициализации JS, где возникает проблема. Вы парафировать его по телефону $ .material.init() , этот код добавляет эффекты пульсации, поэтому, когда вы нажимаете на кнопку, вы получаете волну или волнующую анимацию, и здесь возникает проблема, получая $ .material.init() для правильной работы в Aurelia.
1) После некоторую помощь по gitter вы можете использовать обратный вызов attach() для запуска этого кода, но это работает только для каждого класса, поэтому мне нужно будет добавить
//attached() {
// $.material.init();
//}
В качестве альтернативы вышеперечисленному кто-то из gitter предложил использовать конвейер маршрутизатора для его вызова, я попробовал это и до сих пор не смог загрузить его на каждую страницу, добавив его в конвейер после следующих документов, которые я добавил следующим образом:
config.addPipelineStep('modelbind', BSMaterial);
затем
class BSMaterial {
run(routingContext, next) {
$.material.init();
console.log('bsmaterial fired');
return next();
//
} }
Это работает частично, если вы нажмете на навигационные ссылки, то вы получите эффект волны, но попробуйте нажать на кнопку отправки не пульсация эффектов, так что, кажется, не применяя для каждого класса, но только для маршрутизатора, я думаю,
Другая проблема связана с другим эффектом Б.С. материала, вы можете добавить класс CSS для элемента управления вводом называется
floating-label
, то при нажатии на входе управления замещающий текст движется а затем на потерянном фокусе он движется назад, но с Aurelia вы можете видеть, что текст заполнителя уже перемещен вверх. Если вы удалите значение.bind, то есть удалите value.bind="firstName"
, то заполнитель будет анимировать, как и в режиме onfocus и lostfocus, поэтому что-то происходит с value.bind, который мешает.
Не может быть так сложно получить что-то простое, как этот плагин jquery для проектирования материалов, чтобы работать, я даже не пытаюсь взаимодействовать с Aurelia, я просто хочу, чтобы он работал так, как если бы вы добавили его к нормальному html через теги скриптов. Я знаю, что я еще не понимаю Аурелию.
Любая помощь в получении этой работы будет отличной.
Текущего app.js пытается использовать метод трубопроводного
import {inject} from 'aurelia-framework';
import {Router} from 'aurelia-router';
import 'bootstrap';
import 'bootstrap/css/bootstrap.css!';
import 'bootstrap-material';
@inject(Router)
export class App {
constructor(router) {
this.router = router;
this.router.configure(config => {
config.title = 'Aurelia';
// config.addPipelineStep('authorize', AuthorizeStep); // Add a route filter to the authorize extensibility point
config.addPipelineStep('modelbind', BSMaterial); // Transparently creates the pipeline "myname" if it doesn't already exist.
// config.addPipelineStep('modelbind', 'myname'); // Makes the entire `myname` pipeline run as part of the `modelbind` pipe
config.map([
{route: ['', 'welcome'], moduleId: './welcome', nav: true, title: 'Welcome'},
{route: 'test', moduleId: './test', nav: true, title: 'Test'},
{route: 'flickr', moduleId: './flickr', nav: true},
{route: 'child-router', moduleId: './child-router', nav: true, title: 'Child Router'}
]);
});
}
}
class AuthorizeStep {
run(routingContext, next) {
// debugger;
// debugger;
// Check if the route has an "auth" key
// The reason for using `nextInstructions` is because
// this includes child routes.
if (routingContext.nextInstructions.some(i => i.config.auth)) {
var isLoggedIn = /* insert magic here */false;
if (!isLoggedIn) {
return next.cancel(new Redirect('login'));
}
}
return next();
}
}
//attached() {
// $.material.init();
//}
class BSMaterial {
run(routingContext, next) {
$.material.init();
console.log('bsmaterial fired');
return next();
//
}
}
welcome.html
<template>
<section>
<h2>${heading}</h2>
<form role="form" >
<div class="form-group">
<label for="fn">First Name</label>
<input type="text" value.bind="firstName" class="form-control floating-label" id="fn" placeholder="first name">
</div>
<div class="form-group">
<label for="ln">Last Name</label>
<input type="text" value.bind="lastName" class="form-control floating-label" id="ln" placeholder="last name">
</div>
<div class="form-group">
<label>Full Name</label>
<p class="help-block">${fullName | upper}</p>
</div>
<a href="javascript:void(0)" class="btn btn-default">Default</a>
</form>
</section>
</template>
Был ли у вас тот же вопрос в канале Gitter? Я думал, что мы решили проблему, которую вы имели там, поэтому, если не сообщите мне об этом. –
Да, спасибо за вашу помощь, но я все еще не мог правильно работать с pipleline, поэтому он запускал $ .material.init(); для каждой страницы. Кроме того, вторая проблема заключалась в том, что даже когда material.init действительно запускал value.bind, похоже, противоречил материалу js, без ошибок, но просто не работал, я изложил, что я пробовал, и детали оставшихся проблем в вышеупомянутом сообщении , Я ценю вашу помощь. – dan
Я написал блог о создании пользовательских элементов для обтекания фреймворков css здесь: http://davismj.me/blog/semantic-custom-element/ –