javascript - Angular js 无法识别 Controller

标签 javascript angularjs

如果这是像分号这样愚蠢的东西,我提前道歉,但我很难让 Angular 识别我的 Controller (我是 Angular 的新手)。

我收到错误,图像 Controller 未定义。

注释:我正在使用 Angular 文件上传插件,这是一个 Web API 2.0 应用程序。

我有 2 个 Javascript 文件 UniqueAPIStart、UniqueAPIImages

UniqueAPIStart(已修复):

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

UniqueAPIImages(已修复):

UniqueAPI.controller('ImageController', ['$scope', '$upload', function ($scope, $upload) {
    $scope.$watch('myFiles', function() {
        for (var i = 0; i < $scope.myFiles.length; i++) {
            var file = $scope.myFiles[i];
            $scope.upload = $upload.upload({
                url: '/api/AdminImages', // upload.php script, node.js route, or servlet url
                //method: 'POST' or 'PUT',
                //headers: {'Authorization': 'xxx'}, // only for html5
                //withCredentials: true,
                data: { myObj: $scope.myModelObj },
                file: file, // single file or a list of files. list is only for html5
                //fileName: 'doc.jpg' or ['1.jpg', '2.jpg', ...] // to modify the name of the file(s)
                //fileFormDataName: myFile, // file formData name ('Content-Disposition'), server side request form name
                // could be a list of names for multiple files (html5). Default is 'file'
                //formDataAppender: function(formData, key, val){}  // customize how data is added to the formData. 
                // See #40#issuecomment-28612000 for sample code

            }).progress(function(evt) {
                console.log('progress: ' + parseInt(100.0 * evt.loaded / evt.total) + '% file :' + evt.config.file.name);
            }).success(function(data, status, headers, config) {
                // file is uploaded successfully
                alert('file ' + config.file.name + 'is uploaded successfully. Response: ' + data);
            }).error(function (data, status) {
                alert(data.error);
            });
    //.then(success, error, progress); // returns a promise that does NOT have progress/abort/xhr functions
    //.xhr(function(xhr){xhr.upload.addEventListener(...)}) // access or attach event listeners to 
    //the underlying XMLHttpRequest
}
        /* alternative way of uploading, send the file binary with the file's content-type.
           Could be used to upload files to CouchDB, imgur, etc... html5 FileReader is needed. 
           It could also be used to monitor the progress of a normal http post/put request. 
           Note that the whole file will be loaded in browser first so large files could crash the browser.
           You should verify the file size before uploading with $upload.http().
        */
        // $scope.upload = $upload.http({...})  // See 88#issuecomment-31366487 for sample code.

    });
}]);

然后是我的 cshtml:

@section scripts
{
    <script type="text/javascript" src ="/Scripts/API/ImageController.js"></script>
}

<div class="container" ng-app="UniqueAPI">
    <div class="row">
        <div class="col-md-4" ng-controller="ImageController">
            <form action="javascript:void(0);">
                <div class="form-group">
                    <label for="imgDescription">Email address</label>
                    <input type="text" class="form-control" id="imgDescription" placeholder="Image Description">
                    <button ng-file-select ng-model="files" multiple="true">Attach Any File</button>
                    <div ng-file-drop ng-model="files" class="drop-box"
                         drag-over-class="{accept:'dragover', reject:'dragover-err', delay:100}"
                         multiple="true" allow-dir="true" accept="image/*">
                        Drop Images here
                    </div>

                </div>
            </form>
        </div>

    </div>
</div>

布局文件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>

    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">


    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

</head>
<body>
    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li>@Html.ActionLink("Home", "Index", "Home", new { area = "" }, null)</li>
                    <li>@Html.ActionLink("API", "Index", "Help", new { area = "" }, null)</li>
                </ul>
            </div>
        </div>
    </div>
    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p>
        </footer>
    </div>

    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js"></script>

    <script type="text/javascript" src="~/Scripts/angular-file-upload-all.js"></script>
    <script type="text/javascript" src="~/Scripts/angular-file-upload-shim.js"></script>
    <script type="text/javascript" src="~/Scripts/angular-file-upload.js"></script>
    <script type="text/javascript" src="~/Scripts/API/UniqueAPIStart.js"></script>
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>

最佳答案

首先,我看不到您导入所需的库:

<script src="https://angular-file-upload.appspot.com/js/angular-file-upload-shim.js"></script>
<script src="https://angular-file-upload.appspot.com/js/angular-file-upload.js"></script>

和。您正在创建该模块两次:

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

应该是这样的

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

关于javascript - Angular js 无法识别 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27670048/

相关文章:

javascript - axios ajax,发出ajax请求时显示加载

javascript - Audiolib.js:更改现有 “objects”的值

javascript - 使用drawImage拉伸(stretch) Canvas

angularjs - 如何使 Angular-UI 输入与 AngularJS 属性(特别是 ng-readonly)配合?

javascript - Angular force 在 url 中出现不需要的感叹号

javascript - 隐藏 Google 图表中的特定图例

javascript - 如何关闭richmarker infoview?

javascript - 如何在 Javascript 中定义自动重新启动的简单倒计时

search - 如何延迟 AngularJS 即时搜索?

javascript - Angular 路线不会重定向