将 MaterializeCSS 与 aurelia 结合使用

2024-01-12

我想问是否有一步一步的方法来使用或配置 Aurelia 的materializecss。我目前可以运行我的 Aurelia 应用程序,直到教程中我的 index.html 看起来像这样:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <link href="jspm_packages/github/dogfalo/[email protected] /cdn-cgi/l/email-protection/dist/css/materialize.css" rel="stylesheet" />
   <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
   <title></title>
</head>
<body aurelia-app>
   <script src="jspm_packages/system.js"></script>
   <script src="config.js"></script>
   <script>
      System.import('aurelia-bootstrapper');
   </script>
</body>
</html>

我当前正在使用 ASP .NET 5 Preview 空模板和 jspm 来安装 Aurelia。我已经安装了materializecssjspm install github:dogfalo/materialize并复制了一些html代码这个链接 http://materializecss.com/collapsible.html测试它是否有效。

这段代码进入我的 app.html 文件

<template>
<ul class="collapsible" data-collapsible="accordion">
    <li>
        <div class="collapsible-header"><i class="material-icons">filter_drama</i>First</div>
        <div class="collapsible-body"><p>Lorem ipsum dolor sit amet.</p></div>
    </li>
    <li>
        <div class="collapsible-header"><i class="material-icons">place</i>Second</div>
        <div class="collapsible-body"><p>Lorem ipsum dolor sit amet.</p></div>
    </li>
    <li>
        <div class="collapsible-header"><i class="material-icons">whatshot</i>Third</div>
        <div class="collapsible-body"><p>Lorem ipsum dolor sit amet.</p></div>
    </li>
</ul>
</template>

虽然我的 app.html 文件有这个用于测试

export class App {
    constructor() {
       this.message = 'test app';
    }
}

我的 package.json 当前包含这些

{
 "jspm": {
   "directories": {
   "baseURL": "wwwroot"
 },
 "dependencies": {
   "aurelia-bootstrapper": "github:aurelia/bootstrapper@^0.16.0",
   "aurelia-framework": "github:aurelia/framework@^0.15.0",
   "dogfalo/materialize": "github:dogfalo/materialize@^0.97.0"
 },
 "devDependencies": {
   "babel": "npm:babel-core@^5.8.22",
   "babel-runtime": "npm:babel-runtime@^5.8.20",
   "core-js": "npm:core-js@^1.1.0"
  }
 }
}

当我在 Chrome 中浏览 index.html 文件时,我可以看到格式良好的可折叠内容,但当我单击任何标题时,正文不会展开。看来js文件没有被jspm引用或者没有正确配置。


您已经快完成了 - Materialise 库有一个 JavaScript 组件,可以启用某些功能。在可折叠组件的文档中有这样的内容:

初始化

可折叠元素仅在动态添加时才需要初始化。您还可以在初始化中传入选项,但这也可以在 HTML 标记中完成。

$(document).ready(function(){
    $('.collapsible').collapsible({
      accordion : false // A setting that changes the collapsible behavior to expandable instead of the default accordion style
    });
  });

这些说明对于静态页面很有用,但对于像您这样的单页面应用程序没有帮助。你不能使用$(document).ready因为当该事件触发时,您的组件不在页面上。

要使组件正常工作,您可以做的最简单的事情是为视图模型提供对可折叠元素的引用,然后调用$(element).collapsible()在上面。下面是如何做到这一点...

首先,添加ref归因于ul:

<template>
<ul ref="myElement" class="collapsible" data-collapsible="accordion">
    <li>
        <div class="collapsible-header"><i class="material-icons">filter_drama</i>First</div>
        <div class="collapsible-body"><p>Lorem ipsum dolor sit amet.</p></div>
    </li>
    <li>
        <div class="collapsible-header"><i class="material-icons">place</i>Second</div>
        <div class="collapsible-body"><p>Lorem ipsum dolor sit amet.</p></div>
    </li>
    <li>
        <div class="collapsible-header"><i class="material-icons">whatshot</i>Third</div>
        <div class="collapsible-body"><p>Lorem ipsum dolor sit amet.</p></div>
    </li>
</ul>
</template>

接下来,当元素附加到 DOM 时初始化可折叠元素:

export class App {
    constructor() {
       this.message = 'test app';
    }
    attached() {
       $(this.myElement).collapsible();
    }
}

最后,通过将以下行添加到您的 app.js 中,确保加载 MaterializeCSS jquery 组件:

import materialize from 'dogfalo/materialize';

如果您正在处理大量视图或元素,所有这些可能会变得乏味,因此您需要将这个逻辑包装在 aurelia 中自定义属性 http://aurelia.io/docs.html#custom-attributes让事情变得更方便:

import {inject} from 'aurelia-framework';

@inject(Element)
export class CollapsibleCustomAttribute {
  constructor(element) {
    this.element = element;
  }

  attached() {
    ${this.element).collapsible();
  }
}

现在您只需添加collapsible属性到您的元素,它将自动初始化 MaterializeCSS 的行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 MaterializeCSS 与 aurelia 结合使用 的相关文章

  • 由于 apollo-client 未定义,无法解构 GraphQL 查询?

    我正在寻找调试与错误消息相关的问题 未捕获的类型错误 无法解构 0 apollo client WEBPACK IMPORTED MODULE 4 useQuery 因为它未定义 Context 我正在为我的 React js 项目设置后端
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 如何在react-bootstrap中禁用表单提交的

    在下面的代码片段中 我有许多文本类型的输入表单 如果用户点击 我似乎会得到相同的合成事件 就像他们按下提交按钮一样 我想忽略作为表单提交 只允许一个人按下 提交 按钮 我删除了一些表单组以减少示例 在所有情况下 按钮或 ENTER 键 e
  • 在 Aurelia 视图中使用文字 JavaScript 值

    我试图通过使用 if 模板控制器使我的组件可隐藏 问题是即使我在其中输入 false 它也是可见的
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • Draggable JS Bootstrap 模式 - 性能问题

    对于工作中的项目 我们在 JavaScript 中使用 Bootstrap Modal 窗口 我们想让一些窗口可移动 但我们遇到了 JQuery 的性能问题 myModal draggable handle modal header Exa
  • 如何将函数附加到弹出窗口关闭事件(Twitter Bootstrap)

    我做了一些搜索 但我只能认为我可以将事件附加到导致其关闭的按钮 https stackoverflow com questions 13205103 attach event handler to button in twitter boo
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • Javascript 假值(null、未定义、false、空字符串:“”或 '' 和 0)和比较(==)运算符 [重复]

    这个问题在这里已经有答案了 当我使用任何一个值时 null undefined false 0 in a if陈述 它总是被评估为谬误 false 另外 这些值的否定 null undefined false 0 in a if语句总是被评
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 对于只触及我的工作表的 Google 表格脚本,收到“此应用程序未经验证”

    我正在编写一个 Google Sheets 脚本 我只想访问与 gs 文件关联的同一电子表格中的数据 似乎我应该有权在自己的电子表格中运行脚本 但是每当我运行一个函数时 我都会得到一个This app isn t verified信息 我该
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • Javascript:在settimeout之前调用cleartimeout可以吗?

    我有一个设置计时器的函数 并在计时器到期时回调自身 我想知道的是在函数顶部清除计时器是否是不好的做法 这样做的原因是因为我会不时地异步调用该函数 如果我不先清除计时器 我将同时运行两个计时器 我意识到我可以在对函数进行其他调用之前清除计时器
  • 为什么 Android 上的 RxJava with Retrofit doOnError() 不起作用,而 Subscriber onError 却起作用

    有人可以解释一下为什么这样的代码 networApi getList subscribeOn Schedulers newThread observeOn AndroidSchedulers mainThread doOnError thr
  • 按钮上的图像

    我希望下面的两个脚本有相同的输出 但是当我执行时我没有在按钮上看到图像Script 1 然而 Script 2效果很好 Script 1 from Tkinter import class fe def init self master s
  • enumerate的实现细节是什么?

    Python 有enumerate 使用索引迭代对象 我怀疑解释器创建大量 int 对象的唯一目的是跟踪事物的位置 这政治公众人物页面 http www python org dev peps pep 0279 说了以下内容 但我不太明白幕
  • 获取WIFI信号强度-寻求最佳方法(IOCTL、iwlist(iw)等)

    我想扫描从3个AP接收到的信号强度 如果每 300 毫秒 最多 500 毫秒 发生一次 我会很高兴 我在路由器上刷了 OpenWRT 我正在寻找一个好的工具来做到这一点 首先 我发现 iwconfig 可以工作 但仅限于我连接到的网络 所以
  • 使用双寄存器方法解决亚稳态问题

    为了解决Verilog中不同时钟域引起的亚稳态 采用双寄存器方法 但据我所知 亚稳态的最终输出尚未确定 输出独立于输入 那么 我的问题是如何保证使用双寄存器方法输出的正确性 Thanks 您不能完全确定您避免了亚稳态 正如您所提到的 亚稳态
  • Mailchimp - 如何判断用户是否已取消订阅?

    因此 他们点击了时事通讯中的取消订阅链接 在他们的个人资料中 例如 此人于 2017 年 3 月 24 日下午 2 40 取消订阅 收到 时事通讯测试 6 后 很好 但是我如何通过 API 以编程方式判断某人是否已取消订阅呢 有可能吗 我问
  • 使用套接字/内存而不是文件在 Cuda 中解码视频

    我目前正在尝试使用 cuda 解码视频 我有一个名为cudaDecodeD3D9 该示例使用了一种名为cuvidCreateVideoSource它采用指向源视频的文件指针 有没有办法让Cuda从内存 套接字 流加载视频 结果我无法使用cu
  • swift 4:将对象与元组进行模式匹配(元组模式无法匹配非元组类型的值)

    我有一个带有几个字段的自定义结构 我想快速对其进行模式匹配switch语句 以便我可以通过将其中一个字段与正则表达式进行比较来自定义匹配 例如 鉴于此结构 struct MyStruct let header String let text
  • Haskell Parsec,将 oneOf 改编为 [String]

    我正在学习 48 小时内为自己编写一个方案 教程 symbol Parser Char symbol oneOf lt gt 这对于符号来说非常有用 但是如果我有一个关键字列表怎么办 即结构体 整数 oneOf 可以适应列表吗 这就是我想要
  • python side_effect - 方法的模拟行为

    在模拟中 我希望某个函数在测试中返回一个新值 我就是这样做的 Class MyClass my var None def foo self var1 return somevalue def bar self my var foo 1 Cl
  • JDBC 类型没有方言映射:Hibernate 4 和 SQL Server 2012 为 -9 [重复]

    这个问题在这里已经有答案了 我正在使用最新的 Hibernate 4 2 7 SP1 以及实体管理器和验证器等 我正在使用 Microsoft SQL Server 2012 我尝试使用的代码是 StringBuffer sb new St
  • 接收所请求网页的多个 loadFinished 信号

    我收到多个loadFinished当我尝试加载时发出信号QWebPage我不确定是什么导致了这个问题 还有其他几个问题似乎暗示了同一问题 但解决方案对我不起作用 QtWebPage loadFinished 多次调用 https stack
  • Java中可以使用组合而不是继承来实现多态吗?

    我正在学习Java 我知道什么是继承和组合 我见过很多使用继承的多态性的例子 所以我的第一个问题是 使用组合也可以做到同样的事情吗 如果是这样 可以举个什么例子吗 我的第二个问题是 多态性基本上是方法重载和 或方法重写吗 如果是 那为什么
  • 从 Excel 数据模型/Power Query 查询单个数据点(获取和转换数据)

    我正在使用最新版本的 Excel 2016 通过 O365 E3 许可证 并使用 Power Query Get Transform Data 我可以成功创建查询并将其加载到页面 我还成功创建了 Power Pivot 报告 我想从通过 P
  • COUNTIF 相当于 dplyr 总结

    我有一个数据框 列出了参加活动的学生总数 Stu 和每组学生人数 ID Sub ID Stu Sub int int int 1 101 80 NA 2 102 130 NA 3 103 10 NA 4 104 210 20 5 105 1
  • ajax 内容加载后点击不起作用

    如何使 live click function 在 ajax 调用后工作并使用 html data 返回内容 经过 4 个小时的搜索 我想我最好问一下 因为我一无所获 这部分正在工作 ajax type POST url loadAlbum
  • 在 IntelliJ IDEA 中按名称查找包

    我知道 Java 的名字package我想在项目中找到它 如何在 IntelliJ IDEA 中快速完成此操作 有键盘快捷键吗 Open Project View工具窗口 切换到Packages查看模式 单击齿轮图标 启用扁平包装选项 禁用
  • Django 1.6 网址不起作用

    我是 Django 新手 试图弄清楚 Django 中的 url 是如何工作的 我的应用程序urls py from django conf urls import url patterns import views urlpatterns
  • 将 MaterializeCSS 与 aurelia 结合使用

    我想问是否有一步一步的方法来使用或配置 Aurelia 的materializecss 我目前可以运行我的 Aurelia 应用程序 直到教程中我的 index html 看起来像这样