使用RequireJS延迟加载Angular控制器

时间:2014-03-15 16:11:41

标签: asp.net-mvc angularjs requirejs

我是Angular世界的新手,目前正试图为我们的ASP.NET MVC项目完成一个干净的设计,其中每个Angular控制器都在一个单独的文件中。我的问题是,是否有可能延迟加载Angular控制器?我目前正在与RequireJS斗争。我的概念证明代码如下:

CSHTML视图 - Index.cshtml

<script src="~/Scripts/Controllers/mainController.js"></script> 
<div class="row" ng-controller="MainController">
    <div class="col-md-4">
        <span>{{1+1}}</span>

        Message Test: {{testmessage}}
        <button ng-click="ucase()">Upper</button>
</div>

_Layout.cshtml(仅显示ng-app的第一行)

<html ng-app="mainModule">

app.js

var mainModule = angular.module("mainModule", []);

mainController.js

angular.module('mainModule').controller('MainController', ['$scope', function ($scope) {
    $scope.testmessage = "hello world!";
    $scope.ucase = function () {
        $scope.testmessage = angular.uppercase($scope.testmessage);
    }
}]);

如何摆脱Index.cshtml文件中对mainController.js的引用?有没有办法在需要时延迟加载控制器? RequireJS可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

最后,我能够使用ocLazyLoader在我的POC项目中实现延迟加载Angular模块:

https://github.com/ocombe/ocLazyLoad

http://plnkr.co/edit/aGxuXMiPgYA0TFc67YL4(演示)

但是,我仍然不确定我们是否会继续这样做。