继续使AngularJS模块不可用(ASP.NET 5)

时间:2016-03-01 19:53:00

标签: javascript asp.net angularjs asp.net-mvc dependency-injection

尝试在现有的ASP.NET 5(Core)项目中使用简单的Angular DI。 一直关注this教程。

版本:

  • AngularJS 1.4.6
  • ASP.NET 5(vNext)
  • Visual Studio 2015
  • Windows 10

用命名等检查所有基本陷阱。不清楚我的依赖js-files" controllers.js" &安培; " services.js"假设是由Angular发现的?

如果我明确地将它们包含在内 - 不应该通过教程 - 我仍然可以

  

[ng:areq] Argument' customerController'得到了,不是一个功能   未定义

的index.html

<!DOCTYPE html>
<html ng-app="bonusapp">
<head>
    <meta charset="utf-8" />

    <link href="lib/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
    <link href="lib/bootswatch/yeti/bootstrap.min.css" rel="stylesheet" />

    <link href="css/main.css" rel="stylesheet" />

    <script type="text/javascript" src="lib/angular/angular.js"></script>
    <script type="text/javascript" src="lib/angular-resource/angular-resource.js"></script>
    <script type="text/javascript" src="lib/angular-route/angular-route.js"></script>

    <script src="lib/app.js"></script>
    <!--<script>angular.bootstrap(document, ['app']);</script>-->
</head>
<body ng-cloak>

    <div id="wrapper" ng-controller="customerController">
        <div id="main" class="container-fluid">
            <div class="row">
                <div class="col-md-3">
                    <h2>Kunder</h2>
                    <ul>
                        <li ng-repeat="item in Models">
                            {{item.FirstName}} {{item.LastName}} <a>Redigera</a> <a>Radera</a>
                        </li>
                    </ul>
                </div>
            </div>
    </div>

    <script type="text/javascript" src="lib/jquery/dist/jquery.min.js"></script>
    <script type="text/javascript" src="lib/bootstrap/dist/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="lib/jquery-validation/dist/jquery.validate.js"></script>
    <script type="text/javascript" src="lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
</body>

</html>

app.js

(function () {
    'use strict';

    // Define module "app"
    angular.module('bonusapp', [
        // Angular modules 
        'ngRoute',
        'ngResource',

        // Custom modules 
        'customerService'

        // 3rd Party Modules

    ]);
})();

controllers.js

(function () {
    'use strict';

    // Assign controller to app
    angular
        .module('bonusapp')
        .controller('customerController', [
            customerController]);

    // $inject() method call is required to enable the controller to work with minification. 
    customerController.$inject = [
        '$scope',
        'Customers'
    ];

    // Construct controller
    function customerController($scope, Customers) {

        // Populate model from service
        $scope.Models = Customers.get();
    }
})();

services.js

(function() {
    'use strict';

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

    customerService
        .factory('Customers',
        ['$resource'], 

    function ($resource) {
        return $resource('/api/customers', {}, {
            // Service call to get Customers
            get: {
                method: 'GET',
                params: {},
                isArray: true
            }
        });
    }
        );

})();

2 个答案:

答案 0 :(得分:1)

正如Win所说,我需要:

  • 修复包含顺序以将jQuery放在第一位
  • 包含我所有的JS文件

但我仍有一些问题。作为参考,这里是固定的脚本:

controller.js

(function () {
    'use strict';

    // Construct controller
    // Remarks: controller is now declared FIRST
    var customerController = function ($scope, Customers) {

        $scope.Title = "Title";

        // Populate model from service
        $scope.Models = Customers.get();
    }

    // $inject() method call is required to enable the controller to work with minification. 
    customerController.$inject = [
        '$scope',
        'Customers'
    ];

    // Assign controller to app
    angular
        .module('bonusapp')
        .controller('customerController', 
            customerController);

})();

services.js

(function() {
    'use strict';

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

    customerService
        .factory('Customers',
        ['$resource', 

    function ($resource) {
        return $resource('/api/customers', {}, {
            // Service call to get Customers
            // Remarks: 'get' in single quotes
            'get': {
                method: 'GET',
                params: {},
                isArray: true
            }
        });
    }
        ]);

})();

答案 1 :(得分:0)

您需要包含 controller.js services.js 文件。

此外,您需要在 angular.js 之前移动 jquery

<script type="text/javascript" src="lib/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="lib/angular/angular.js"></script>
<script type="text/javascript" src="lib/angular-resource/angular-resource.js"></script>
<script type="text/javascript" src="lib/angular-route/angular-route.js"></script>

<script src="lib/app.js"></script>
<script src="lib/controllers.js"></script>
<script src="lib/services.js"></script>

仅供参考: 您可能还希望在发布之前查看捆绑和放大。