我正在使用我继承的传统VB.Net应用程序。的NG-应用和NG-控制器指令都在根主页的HTML元素上出现:角度控制器返回undefined
<html runat="server" id="html" ng-controller="MasterController">
的ng-app
属性在用于页面设置代码隐藏。当我运行页面并查看源代码时,它就存在了。该应用程序可以被限制在模块ng-app="myModule"
该控制器在母版传递到add_load
也不太在所述主体的端部的函数来定义,而不是远离它:
Sys.Application.add_load(function() {
var module = angular.module('myModule');
var MasterController = function ($scope, $compile) {
... // stuffs
}
};
module.controller('MasterController', ["$scope", "$compile", MasterController]);
});
局部,这工作(或似乎工作)罚款,我看到控制台中没有错误。然而,应用程序现在已经部署到暂存环境,在该环境中浏览器控制台我看到一个角度误差:
[ng:areq] not a function got undefined
有临时区域和我的本地环境中,这些差异之间的差异非常少很大程度上是.Net脚本捆绑器用于连接和缩小一堆JS文件,包括Angular和应用程序使用的数据。 AFAIK没有其他差异。
我不认为捆绑器导致问题,因为我启用了本地捆绑,我没有看到错误。我也看不到传递给应用程序的数据会导致问题(它是客户数据,帐户数据等),因为它甚至不在此特定控制器中使用。
感谢您的提示!风格指南看起来不错。我会尽快尝试这些 – danwellman
还是不明白为什么这是最佳做法。为什么将一个声明控制器的逻辑行分成3行是如此聪明的想法...... –
@PetrAveryanov因为Angular 1.x依赖注入使用字符串匹配和/或稍后添加的数组语法“hack”(1.2版或许? )。通过明确地将其拉出,您可以确保您的代码具有依赖性,并且它是明确的且非常易读。任何后续的开发人员都会完全知道这段代码在做什么。另外,有多少控制器最终成长为注入10个参数?这使得很长的“一线”。将它分开可以更容易地控制和阅读您的声明。 –