gpt4 book ai didi

javascript - Angular Controller 返回未定义

转载 作者:行者123 更新时间:2023-11-30 16:32:22 25 4
gpt4 key购买 nike

我正在使用我继承的遗留 VB.Net 应用程序。 ng-app 和 ng-controller 指令都出现在根母版页的 HTML 元素上:

<html runat="server" id="html" ng-controller="MasterController">

ng-app 属性在页面的代码隐藏中设置。当我运行页面并查看源代码时,它就出现了。该应用程序的范围是模块 ng-app="myModule"

Controller 也在母版页中传递给 add_load 的函数中定义,不在正文末尾,但离它不远:

Sys.Application.add_load(function () {

var module = angular.module('myModule');
var MasterController = function ($scope, $compile) {
... // stuffs
}
};

module.controller('MasterController', ["$scope", "$compile", MasterController]);

});

在本地,这工作(或似乎工作)很好,我在控制台中没有看到任何错误。但是,该应用程序现已部署到暂存环境,并且在该环境的浏览器控制台中,我看到了 Angular 错误:

[ng:areq] not a function got undefined

暂存区和我的本地环境之间几乎没有区别,这些区别主要是.Net 脚本 bundler 用于连接和缩小一堆 JS 文件,包括 Angular,以及应用程序使用的数据。据我所知,没有其他区别。

我不认为 bundler 导致了问题,因为我在本地启用了捆绑并且我没有看到错误。我也看不到传递给应用程序的数据导致了问题(它是客户数据、帐户数据等),因为它甚至没有在这个特定的 Controller 中使用。

最佳答案

不要使用函数表达式语法,因为变量可以在赋值之前被调用。根据 best practices guide 使用函数声明语法代替.

此外,由于您传递的是函数引用,因此请完全取出注入(inject)部分,以确保您的代码在缩小时是安全的。

var module = angular.module('myModule');
function masterController($scope, $compile) {
... // stuffs
}

masterController.$inject = ["$scope", "$compile"];

module.controller('MasterController', masterController);

关于javascript - Angular Controller 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33149285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com