首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用AngularJS和RequireJS设置Skrollr.js

如何使用AngularJS和RequireJS设置Skrollr.js
EN

Stack Overflow用户
提问于 2015-01-25 10:20:17
回答 1查看 683关注 0票数 0

我在使用AngularJS & RequirejS设置Skrollr时遇到了困难。

一些文章建议将Skrollr设置为指令,这是我一直遵循的方法。不幸的是,Skrollr不能初始化。具体地说,当我试图从指令中调用skrollr.init()时,我得到了一个错误,告诉我没有定义skrollr。

下面是我的代码:

directives.js

代码语言:javascript
复制
define(['directivesFactory', 'skrollr'], function(directivesFactory){

directivesFactory.directive('skrollr', [function(){  
    var directiveDefinitionObject = {
        link: function() {
            skrollr.init();
        }
    };

    return directiveDefinitionObject;
}]);
});

main.js

代码语言:javascript
复制
(function() {

'use strict';

require.config({
    baseUrl: 'js',
    paths: {
        'angular': 'libs/angular-1.3.9',
        'angularRoute': 'libs/angular-route-1.3.9',
        'bootstrap': 'libs/modernizr-2.6.2-respond-1.1.0.min',
        'jquery': 'libs/jquery-1.11.0.min',
        'bootstrapJS': 'libs/bootstrap',
        'jqueryElastislide': 'libs/jquery.elastislide',
        'jqueryPpCustom' : 'libs/jquerypp.custom',
        'modernizrCustom' : 'libs/modernizr.custom.17475',
        'skrollr' : 'libs/skrollr.min'
    },
    shim: {
        'angular': {
            exports: 'angular'
        },
        'angularRoute': {
            deps: ['angular']
        },
        'jquery': {
            exports: '$'
        },
        'bootstrapJS': {
            deps: ['jquery']
        },
        'jqueryElastislide':{
            deps: ['jquery']
        },
        'jqueryPpCustom':{
            deps: ['jquery']
        },
        'skrollr': {
            exports: 'skrollr'
        }
    }
});

define('controllersFactory', ['angular'], function(angular) {
    return angular.module('app.controllers', []);
});

define('servicesFactory', ['angular'], function(angular) {
    return angular.module('app.services', []);
});

define('directivesFactory', ['angular'], function(angular) {
    return angular.module('app.directives', []);
}); 

define('app', [
    'angular',
    'angularRoute',
    'servicesFactory',
    'controllersFactory',
    'directivesFactory',
    ],
    function(angular) {
        return angular.module('app', ['app.services', 'app.controllers', 'app.directives', 'ngRoute']);
    }
);

require(['app', 
    'jquery',
    'skrollr',
    'bootstrap', 
    'bootstrapJS',
    'jqueryElastislide',
    'jqueryPpCustom',
    'modernizrCustom'], 
    function(app, 
        jquery, 
        skrollr,
        bootstrap, 
        bootstrapJS, 
        jqueryElastislide, 
        jqueryPpCustom, 
        modernizrCustom) {
    require([
            'controllers/mainController'
        ],
        function() {
            app.config(['$routeProvider', function($routeProvider) {
                $routeProvider.
                    when('/', {templateUrl: 'templates/main.html', controller: "MainController"}).
                    otherwise({redirectTo: '/'});
            }]);

            angular.bootstrap(document, ['app']);
        }
    );
});
})();

从web检查器中,我看到在directives.js文件之前加载了skrollr.min.js,所以我相信指令应该能够调用skrollr中的函数。

如有任何建议,我们将不胜感激-谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-01-25 12:37:55

代码语言:javascript
复制
define(['directivesFactory', 'skrollr'], function(directivesFactory){

directivesFactory.directive('skrollr', [function(){  
    var directiveDefinitionObject = {
        link: function() {
            skrollr.init();
        }
    };

    return directiveDefinitionObject;
}]);
});

这里您似乎没有必需的skrollr,您需要添加require。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28132562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档