javascript - Angularjs 在部分页面中加载 JQuery

标签 javascript jquery html css angularjs

我有一个 LAMP 网站,我正在尝试将其转换为构建在 MEAN 上,并且我已将索引页面拆分为多个部分,以便我可以拥有一个 SPA。 我是 MEAN 的新手,但我正在慢慢学习和尝试一些东西,但是我现在停留在我在我的一个部分中使用的 JQuery slider 插件 并且它不会加载任何图像网站运行时的占位符。 我知道我应该使用指令,以便在部分页面加载到主页面后加载 JQuery 函数,因此为什么在 slider 应该显示的位置没有显示任何内容。

这是我的部分页面,其中包含单个图像的 slider 片段(目前 3 个图像有 3 个这样的“li” block ): home.html

        <div id="pm-slider" class="pm-slider">
            <ul class="pm-slides-container" id="pm_slides_container">

                <li data-thumb="public/app/img/home/slide1a.jpg" class="pmslide_0"><img src="public/app/img/home/slide1.jpg" alt="img01" />

                        <div class="pm-holder">
                            <div class="pm-caption">
                                  <h1>Medical professionals</h1>
                                  <span class="pm-caption-decription">
                                    that you can trust
                                  </span>

                                  <a href="services.html" class="pm-slide-btn">learn more <i class="fa fa-plus"></i></a>
                            </div>
                        </div>
                </li>
              </ul>
           </div>

我的 index.html 文件包含 div ng-view 标记,所有 home.html 都应该放在该标记中。

app.js 包含用于路由的代码,我知道这里应该是 JQuery 插件的 .directives 函数

var digiProm = angular.module('digiProm', [
     'ngRoute']);

digiProm.config(['$routeProvider', function($routeProvider){
    $routeProvider
        .when('/', {
            templateUrl:    'public/app/partials/home.html'
        })
        .when('/services', {
            templateUrl:    'public/app/partials/services.html'
        })
        .otherwise({
            redirectTo:     'partials/home.html'
        });
}]);

在观看了多个视频和教程之后,我无法弄清楚我应该如何编写我的指令函数来工作。我正在尝试弄清楚如何使用这种格式

  digiProm.directive('slider',  ['$rootScope', function($rootScope) {
   return {
restrict: 'EA',
templateUrl: '/path/to/template',
link: function(scope, iElement, attrs) {
    //attrs references any attributes on the directive element in html

    //iElement is the actual DOM element of the directive,
    //so you can bind to it with jQuery
    $(iElement).bxSlider({
        mode: 'fade',
        captions: true
    });
   }
};

}]);

这里的 templateUrl 应该是幻灯片的 jquery 文件的路径吗? 链接里面到底会发生什么:function(...) ?该脚本已作为有关如何使用 bxSlider 的示例显示,我正在尝试使用 Pulse PM-Slider,因此不确定在部分加载后我应该调用哪些函数来加载它...

非常感谢任何形式的帮助。 提前谢谢你

最佳答案

如果指令仅在另一个模板中已存在的元素上激活,则您不需要 templateUrl

用于将 html 注入(inject)到元素中。换句话说,一个指令可以定义它自己的模板

此外,restrict 是告诉指令是否要查找 E 元素,或 A 属性或 C- 一个类。

我建议您添加一个属性,因为它可以让您稍后在标记中更容易看到

<div slider id="pm-slider" class="pm-slider">

然后从指令声明对象中删除 templateUrl

另请注意,当 jQuery 在 angular.js 之前包含在页面中时 iElement 已经是一个 jQuery 对象,因此您可以只使用 iElement.bxslider({....})

关于javascript - Angularjs 在部分页面中加载 JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35526430/

相关文章:

javascript - 如何使用 Javascript 循环遍历数组并更改和添加额外的 HTML,以输出带有这些值的一些文本?

html - (HTML/CSS) 如何像在 Google 或 Reddit 上一样重复元素?

javascript - 通过jquery检查页面加载本身是否选中复选框

javascript - 使用 unbind 解除 Backbone 事件的绑定(bind)

jquery - jq 命令检查 json 数组响应是否具有使用 shell 脚本批准的特定用户名和状态

javascript - 未捕获类型错误 : . vegas 不是函数

javascript - 如何使用 jquery 和 javascript 创建模态窗口以帮助用户做出选择

javascript - 使用 javascript 提取并探索 .ZIP 文件夹中的文件修改时间戳

javascript - Bootstrap datetimepicker 小部件中的语言

html - IE10及之后的伪元素