如何以 AMD 方式集成 Foundation 3

2024-01-01

EDIT 4

有一个模块定义在(来​​自Foundation 3包裹)app.js:

(function($, window, undefined) {
    'use strict';

    var $doc = $(document), Modernizr = window.Modernizr;

    $(document).ready(function() {
        $.fn.foundationAlerts ? $doc.foundationAlerts() : null;
        // ...
        $.fn.foundationClearing ? $doc.foundationClearing() : null;

        $('input, textarea').placeholder();
    });
    // touch support detction is omitted
})(jQuery, this);

我尝试将其解释为下一种形式:

引导程序.JS

require.config({
    paths: {
        // other paths then..
        'foundation': '../libs/zurb'
    },
    shim: {
        'foundation/jquery.foundation.topbar': { deps: ['jquery'] },
        'foundation/jquery.foundation.accordion': { deps: ['jquery'] },
        // ..all that stuff..
        'foundation/jquery.placeholder': { deps: ['jquery'] }
    }
});

require(['domReady', 'app'], function(domReady, app) {
    domReady(function() {
        app.initialize();
    });
});

APP.JS

嗯..我发现这并不像预期的那样工作:

define(
    [
        'jquery',
        'underscore',
        'backbone',
        'routing/AppRouter',
        'foundation/modernizr.foundation',
        'foundation/jquery.foundation.accordion',
        // all that foundation scripts...
        'foundation/jquery.placeholder'
    ],
    function($, _, Backbone, AppRouter) {
        return {
            initialize: function() {
                var $doc = $(document);

                // these things fail
                $.fn.foundationAccordion ? $doc.foundationAccordion() : null;
                // ...
                $.fn.placeholder ? $('input, textarea').placeholder() : null;

                // this works great!
                $('#slider').orbit();

                // router/controller initialization
                AppRouter.initialize();
            }
        };
    }
);

当页面加载时,人们可以看到foundation'sui 元素根本不起作用(手风琴不展开其面板等)。

当我进入时$(document).foundationAccordion()在 Chrome 控制台中(页面已加载)启用UI elements在一页上。

Help!!


当您触发初始化程序时,请确保 100% 您想要使用基础插件添加的所有 DOM 元素已经在主 DOM 树中。在我看来,您正在动态创建带有主干和模板的界面,但 Foundation 似乎没有准备好这种方法。查看代码,它看起来更多地针对静态页面,而不是高度动态的单页应用程序。

不是使用基础的专家,但我会尝试在路由器初始化之后移动基础脚本的初始化,我假设第一个视图被渲染以确认我的假设。但我担心它不会自动为整个应用程序工作,每次您重新绘制或动态创建使用基础组件的新视图时,您都必须将至少一些脚本重新应用到 dom 元素,因为它们赢了不适用于应用程序生命周期后期动态创建的元素。

一些脚本正在使用文档中的委托,并且应该始终工作 - 就像警报组件一样,但其他脚本(例如手风琴)将无法工作,除非在手风琴元素之后调用(强制accordion class) 被插入到 DOM 树中 - 所以在骨干视图插入主 DOM 树之前作为分离节点的一部分不算数,除非您修改基础插件,该插件不支持将折叠行为附加到具有不同选择器的元素或分离中的元素DOM 节点

我建议您查看所有基础插件的源文件,以了解它们如何工作以及如何在单页应用程序的上下文中驯服它们,因为它们的实现质量与我在快速查看中看到的有很大差异。在他们的 github 上查看 https://github.com/zurb/foundation/tree/master/vendor/assets/javascripts/foundation.

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

如何以 AMD 方式集成 Foundation 3 的相关文章

随机推荐

  • 理解 phpcurl_multi_exec

    我试图理解curl multi exec 我在这里复制了一部分手动示例 所以我想知道它是如何工作的 我猜第一个循环发送http请求 但随后是一个循环内的循环 使用带有看似未记录的标志的函数 我想并行下载 70 个网址 http www ph
  • 何时使用函数式 setState

    在过去的几天里 我一直在学习 React 查看了一些关于编写不同元素的不同方式的教程和解释 不过 有一个我一直很好奇的 setState更新 覆盖函数state组件的属性 例如 假设我有一个包含以下内容的课程 class Photos ex
  • RxJs switchMap 与 Angular HttpClient

    我有一个用例 每当触发新请求时 任何已经在进行中的 http 请求都应该被取消 忽略 For eg 当请求 1 响应时间太长 网络连接速度变慢时 会出现请求 例如 2 在这种情况下 2 从服务器获得非常快的响应 即使 1 返回 HTTP 响
  • 如何以 REST方式返回随机项?

    我的设计公开了两种资源 Images Tags 我希望客户能够通过他们的标签请求随机图像 例如 给我标记有 纽约 和 冬天 的随机图像 在这种情况下 RESTful 设计会是什么样子 为了总结评论中的所有讨论 并且不改变我最初的建议 这就是
  • php静态方法问题

    这两段代码有什么区别 class something static function doit echo hello world something doit 和相同但没有 static 关键字 class something functi
  • 如何设置网格视图列的高度?

    我是flutter新手 没有太多经验 我正在尝试使用 flutter 开发一个 android 应用程序 这是我以前的应用程序设计 我还能够成功地在颤动中制作网格视图 但列高是问题所在 他们中的任何人都可以帮助我解决我的颤振代码吗 clas
  • Hadoop 2.4.1 和适用于 Hadoop 的 Google Cloud Storage 连接器

    我正在尝试使用 Google 的 Cloud Storage Connector for Hadoop 在 Hadoop 上运行 Oryx https cloud google com hadoop google cloud storage
  • 如何通过jquery隐藏没有id/class的div?

    如何使用 jQuery 隐藏第一个 第二个 div Div 无法获取 id class div p ssssssss p div div p ttttttttt gt p div div p fffff p div 隐藏第一个 div 元素
  • Form1_KeyDown 不起作用

    private void Form1 KeyDown object sender KeyEventArgs e if listBox1 Items Contains e KeyCode listBox1 Items Remove e Key
  • 在 C++ 中添加双精度数和复数

    考虑一下这段代码 include
  • 通过使用网格视图中的图像按钮在代码隐藏中调用函数

    我有一个ImageButton在一个GridView在 aspx 上clicking this ImageButton我必须调用一个函数 这就是我尝试的方法 但该函数没有被调用 aspx页面内的代码
  • 使用自动布局检索子视图的正确位置

    我想以编程方式将视图放置在故事板中创建的所有子视图的中心 在故事板中 我有一个视图 在一个垂直 StackView 内部 它具有填充全屏的约束 分布 等间距 在垂直堆栈视图内部 我有 3 个水平堆栈视图 约束高度 100 超级视图的尾随和前
  • VS2008:项目现在需要很长时间才能打开

    昨天下午 Visual Studio 2008 突然开始需要很长时间才能打开 ASP NET Web 窗体 项目 几个月后没有出现任何问题 这个问题似乎是在我尝试将 CrystalDecisions Enterprise dll 和 Cry
  • 在 R Shiny 中使用并行 foreach 制作进度条

    我正在尝试添加一个进度条ocr data 在 for 循环中 但是当串联使用时 该过程非常慢 我正在尝试利用并行来加快生成表的过程ocr data x 代码粘贴在这里 ui lt fluidPage Application title ti
  • 如何在Android上的文本视图中对长文本进行文本换行

    在我的应用程序中 我有包含长文本的文本视图 我需要像 android 模拟器 gt 联系人 gt 电话 屏幕上没有联系人拨号盘 那样的文本换行 but in my application i get text wrapping as fol
  • HTML5 画布中的碰撞检测。也优化了

    我正在制作一个平台游戏 但我的碰撞检测有问题 我创建了一个在屏幕 地图上绘制图块的函数 在该函数中是我的碰撞检测 当仅绘制一个图块时它工作正常 但是当我用三个图块创建 楼梯 时 第一个图块无法正常工作 玩家只是被 推 到图块上 侧面检测不起
  • iTunes Store 操作失败。您必须为此请求提供 CFBundleIdentifier

    我刚刚注册了这个地方 我已经制作了应用程序 一切正常 应用程序所有证书和文件都已更新 但是当我尝试从 Xcode 上传到应用程序商店时 我不断收到此错误 如果有人能帮我解决它 那就太好了 谢谢 iTunes Store 操作失败 您必须为此
  • 如何解除 Xcode 5 项目的工作副本与已失效的 SVN 服务器的关联

    我有一个 Xcode 5 项目的修改工作副本 该副本是从不再可用的远程 svn 服务器签出的 如何删除工作副本的 svn 关联并使其不受源代码控制 最终我想基于工作副本创建一个 git 存储库并将修改推送到它 我不需要保留 svn 历史记录
  • 读取文件时Python enumerate() tqdm 进度条?

    当我使用此代码迭代打开的文件时 我看不到 tqdm 进度条 with open file path r as f for i line in enumerate tqdm f if i gt start and i lt end print
  • 如何以 AMD 方式集成 Foundation 3

    EDIT 4 有一个模块定义在 来 自Foundation 3包裹 app js function window undefined use strict var doc document Modernizr window Moderniz