javascript - 如何让 Angular.js 与其他库一起使用?

标签 javascript html angularjs

我正在建立一个 SPA;我现在已经合并了路线/模板。它大部分工作正常,但是两个插件似乎不起作用,我怀疑是由于我的集成所致?

#1 当页面最初加载时,我的 flexSlider slider 工作正常。但是,当我单击返回 flexslider 页面时, slider 不会再次触发。我在控制台中没有收到任何错误。

这是 slider 实现:

 $(window).load(function() {
    $('.flexslider').flexslider({
        pauseOnHover: true,
        randomize: true,
        animation: "slide"

    });
});

这是我的 Angular 文件脚本:

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

   rustyApp.config(['$routeProvider', function($routeProvider) {
     $routeProvider
         .when('/home', {
         templateUrl: 'partials/home.html',
         controller: 'HomeController'
     })
        .when('/work', {
         templateUrl: 'partials/work.html',
         controller: 'WorkController'
     })
        .when('/contact', {
        templateUrl: 'partials/contact.html',
        controller: 'ContactController'
     })
       .otherwise({
       redirectTo: '/home'
   })

  }]);

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


  rustyApp.controller('HomeController', function($scope) {});
  rustyApp.controller('WorkController', function($scope) {});
  rustyApp.controller('ContactController', function($scope) {});

#2 我正在使用移动设备的 Canvas 外导航。当我单击相应页面的链接时,我会得到不同的模板/ View ,但侧面板不会关闭。

<aside class="left-off-canvas-menu">
    <ul class=" off-canvas-list">
        <li class="uk-active"><a href="#home"><i class="uk-icon-home"></i>home</a></li>
        <li><a href="#work"><i class="uk-icon-photo"></i> work</a></li>
        <li><a href="#contact"><i class="uk-icon-envelope-o"></i> contact</a></li>
    </ul>
</aside>

#3 现在您可以看到它显示 /#/home 不应该是 index.html/home 吗?

enter image description here

提前致谢

最佳答案

您需要了解 AngularJs 是如何工作的,通常您需要了解 Angular 组件的生命周期。我正在尝试:

第一季度。大多数时候,Angular 不能与其他非 Angular javascript 文件很好地配合。点击返回(或刷新)到另一个页面后,弹性代码无法工作的主要原因是 AngularJs 不知道弹性代码的存在。

Angular 的工作原理是,当您的 HTML 文件(及其必要的 JS 文件)被加载时,Angular 将开始启动,附加必要的监视程序,然后重新渲染整个 HTML 文件。那么为什么你的弹性代码无法工作呢?因为 Angular 从不观察它,因此永远不会消化它,因此,它完全忽略了你的灵活代码。第一次有效,但第二次就不行了。

为了解决这个问题,要么你找到一个 Angular 友好的 Flexi 替代方案(我很确定有很多),要么你需要编写自己的全局变量来同步 Flexi 和 Angle 之间的资源。

这个post对我很有帮助,希望对你也有帮助。

第二季度。不知道这里的确切问题是什么。但从我在这里看到的,也许您需要在 Controller 中显式编写关闭 Canvas 代码?如果没有 controller 负责,那么您需要在 ngRoute 中处理它,即在转移到下一个状态之前关闭导航栏。

第三季度。将 $locationProvider.html5Mode(true); 添加到您的模块配置文件中,然后就可以开始了。

希望这些有帮助:D

关于javascript - 如何让 Angular.js 与其他库一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26194943/

相关文章:

javascript - 如何在javascript中有效解析xml

javascript - 如何使菜单栏像没有 Bootstrap 的正确菜单栏一样工作?

javascript - jquery-bootgrid 如何将两个数据值合并到同一列中

javascript - AngularJS - 在 Controller 之间共享范围值

javascript - 如何将 Float 与 AngularJS 与 x 轴上的时间集成

javascript - offset().top 和 element.offsetTop 之间的 jQuery 区别

javascript - keypress 和 keydown 优先于 Firefox 和 Safari 中的粘贴事件

javascript - MVC 5 中带有日期选择器图标的文本框

javascript - 表单已验证但未发送电子邮件

javascript - 将 PHP 数组转换为项目对象以与 AngularJS 一起使用