相关疑难解决方法(0)

将Require.js与Angular.js一起使用是否有意义?

我是Angular.js的新手,并试图理解它与Backbone.js的不同之处......我们曾经使用Backbone来管理我们的包依赖关系和Require.js.使用Angular.js做同样的事情是否有意义?

javascript requirejs angularjs

444
推荐指数
10
解决办法
16万
查看次数

单页面应用程序 - 根据局部视图动态加载js文件

我刚刚开始学习Angular并按照这里的教程 - http://docs.angularjs.org/tutorial/step_00

我从GitHub下载了种子示例,效果很好.我有一个问题 - 如果部分视图需要引用外部js文件,是否需要在开头添加到index.html文件?我希望应用程序尽可能精简,只希望包含当前视图所需的js引用.是否可以根据视图动态加载js文件?

angularjs

39
推荐指数
3
解决办法
8万
查看次数

AngularJS动态加载控制器

我读了很多关于lazzy loading的内容,但是在使用$ routeProvider时我遇到了一个问题.

我的目标是加载一个包含控制器的javascript文件,并添加一个先前已加载的控制器的路由.

我要加载的javascript文件的内容

angular.module('demoApp.modules').controller('MouseTestCtrlA', ['$scope', function ($scope) {
    console.log("MouseTestCtrlA");
    $scope.name = "MouseTestCtrlA";
}]);
Run Code Online (Sandbox Code Playgroud)

调用angular bootstap时不包含此文件.这意味着,我必须加载文件并创建到该控制器的路由.

首先,我开始编写一个必须加载Javascript文件的resolve函数.但是在路由声明中声明我的控制器参数给了我一个错误:

'MouseTestCtrlA'不是函数,未定义

这是我要设置的电话:

demoApp.routeProvider.when(module.action, {templateUrl: module.template, controller: module.controller, resolve : {deps: function() /*load JS file*/} });
Run Code Online (Sandbox Code Playgroud)

从我读到的,控制器参数应该是一个注册的控制器

controller - {(string | function()=} - 如果作为字符串传递,则应与新创建的作用域或已注册控制器的名称相关联的控制器fn.

所以我写了一个工厂,应该能够加载我的文件,然后(承诺风格!)我试图宣布一个新的路线.

它给了我类似下面的东西,其中依赖是一个javascript文件的加载路径数组:

用法

ScriptLoader.load(module.dependencies).then(function () {
    demoApp.routeProvider.when(module.action, {templateUrl: 'my-template', controller: module.controller});
});
Run Code Online (Sandbox Code Playgroud)

脚本加载器

angular.module('demoApp.services').factory('ScriptLoader', ['$q', '$rootScope', function ($q, $rootScope) {
        return {
            load: function (dependencies)
            {
                var deferred = $q.defer();
                require(dependencies, function () {
                    $rootScope.$apply(function () {
                        deferred.resolve();
                    }); …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-routing

15
推荐指数
1
解决办法
2万
查看次数

根据路由组动态加载控制器

是否可以根据路由组动态加载控制器,它的js文件和模板?Psuedo代码不起作用:

$routeProvider.when('/:plugin', function(plugin) {
  templateUrl: 'plugins/' + plugin + '/index.html',
  controller: plugin + 'Ctrl',
  resolve: { /* Load the JS file, from 'plugins/' + plugin + '/controller.js' */ }
});
Run Code Online (Sandbox Code Playgroud)

我已经看到很多类似这样的问题,但是没有基于路由组加载js文件/控制器的问题.

angularjs angular-routing angularjs-controller

9
推荐指数
1
解决办法
2万
查看次数