我已经实现了一个代码,我坚持这个问题。 问题1: - 未捕获的ReferenceError:未定义角度 问题2: - 未捕获错误:没有模块:CustomerSearch
我写了我的代码: -
这是我的观看页面
<view>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="QuickSearch.ascx.cs" Inherits="CustomerSearch.QuickSearch1" %>
<!DOCTYPE html>
<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %>
<html >
<head id="Head1" >
<script src ="http://code.jquery.com/jquery-latest.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/Contoller/QuickSearchController.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/Interface/module.js" />
<%-- <dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/app.routes.js" />--%>
<title></title>
<script type="text/javascript">
</script>
</head>
<body ng-app="CustomerSearch">
<form id="form1" >
<div>
<div id="page" ng-controller="CustomerCtrl as custom">
<div id="menuleftcontent">
<table>
<tr id="menu">
<td width="25px !important;"><input type="text" id="txtActId" value="Search" class="tftextinput2" ng-model="search.txtActId" /> </td>
<td><input type="button" value="Search" class="tfbutton2" data-ng-click="search(search)" /> </td>
</tr>
<tr id="TableRow1">
<td colspan="2">
<asp:DropDownList ID="listCustomerType" runat="server" CssClass="dropdown" Width="194px" Height="27px" ng-model="search.listCustomerType">
</asp:DropDownList>
</td>
</tr>
<tr>
<td colspan="2">
<input type="checkbox" id="checkActiveOnly" class="NormalTextBox" value="Active Customers Only" ng-model="search.checkActiveOnly" />Active Customers Only
<br>
<input type="checkbox" id="checkParentsOnly" class="NormalTextBox" value="Parent Accounts Only" ng-model="search.checkParentsOnly" />Parent Accounts Only
</td>
</tr>
</table>
<div >
<div>
<div>
答案 0 :(得分:2)
我相信module.js
包含角度控制器代码,然后在创建不同组件时使用角度对象。
module
。js应在angular.d.ts
文件
答案 1 :(得分:1)
文件序列应为 jquery ,然后有角度,然后是模块文件。
说明:首先声明 jquery ,这是一个独立的库。
其次,你包括 angular ,它也是独立的,但是因为你在jquery中使用它,你希望angular知道jquery是可用的,这样angular可以利用jquery的力量。
第三个是脚本,因为它应该在已经解析角度时进行解析(从那以后只有你的角度代码才有意义)
<强>更新强>
您需要将模块定义为
var CustomerSearch = angular.module(&#39; module_name&#39;)
并在使用之前将其存储在某个变量中。我无法看到你的代码(我可能错了,因为我不知道打字稿(或者你使用的语法),但你可以检查变量是否定义了)
现在,您执行此操作的文件应位于jQuery和angularJS之后的所有JS文件的顶部。这将在您尝试使用之前定义您的模块。
答案 2 :(得分:1)
要重现此类问题,我们可以
1)“删除”角度脚本引用,或者
2)在我们的模块之后,将它放在“late”位置。
a broken plunker会向我们提供此错误:
未捕获的ReferenceError:未定义角度
因为我们跳过了角度脚本
<!--<script data-require="angular.js@*"
src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular.js"
></script>-->
<script src="MainApp.js"></script>
<script src="CustomerSearch.dirc.js"></script>
我们将面临同样的问题(还有很多其他错误),如果我们在页面中放置 angular (在我们的模块定义之后)。请检查此broken example
未捕获的ReferenceError:未定义angular(匿名函数)@ MainApp.js:1 未捕获错误:[$ injector:nomod]模块'CustomerSearch'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。
这条线是罪魁祸首:
<script src="MainApp.js"></script>
<script data-require="angular.js@*"
src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular.js"
></script>
<script src="CustomerSearch.dirc.js"></script>
如果所有内容都在页面中正确排序,它将起作用(这是WORKING plunker):
<script data-require="angular.js@*"
src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular.js"
></script>
<script src="MainApp.js"></script>
<script src="CustomerSearch.dirc.js"></script>
这些是这类错误的标准问题......
另外,如果我们得到
未捕获错误:[$ injector:nomod]模块'CustomerSearch'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。
这可能是由于own scripts:
错误放置造成的<script data-require="angular.js@*"
src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular.js"
></script>
<script src="CustomerSearch.dirc.js"></script>
<script src="MainApp.js"></script> // this one should be before the other one
因为MainApp.js定义了模块:
var app = angular.module('MainApp', [
'CustomerSearch'
]);
angular.module('CustomerSearch',[])
CustomerSearch.dric.js使用它们
var app = angular.module('CustomerSearch');
所以,我们需要先发布声明
EXTEND:
此问题的代码段:
<html >
<head id="Head1" >
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/app/Contoller/QuickSearchController.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/app/Interface/Interface.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/Scripts/angular.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/Scripts/angular.min.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/app/app.routes.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/app/app.module.js" />
<script src ="http://code.jquery.com/jquery-latest.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
应该(我猜)重组:
<html >
<head id="Head1" >
// THIS MUST be first
<script src ="http://code.jquery.com/jquery-latest.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
// MODULES must be defined first
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/app/app.module.js" />
// the rest most likely could be as is
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/app/Contoller/QuickSearchController.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/app/Interface/Interface.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/Scripts/angular.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/Scripts/angular.min.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/Portals/_default/Customer.Search/app/app.routes.js" />
答案 3 :(得分:1)
未知提供商几乎总是意味着:我们忘记注册我们的控制器(提供商)。
该错误与我们的设置有关
<div ... ng-controller="CustomerCtrl" ...
有a broken example - 会给我们带来这种错误:
错误:[ng:areq]参数'CustomerCtrl'不是函数,未定义
所以,我们的代码有什么问题:
module CustomerSearch.controllers {
var app = angular.module('CustomerSearch');
export class CustomerCtrl {
// ...
}
//app.controller("CustomerCtrl", CustomerSearch.controllers.CustomerCtrl);
}
缺少来电 app.controller("")
这WORKING plunker有这个def:
module CustomerSearch.controllers {
var app = angular.module('CustomerSearch');
export class CustomerCtrl {
// ...
}
app.controller("CustomerCtrl", CustomerSearch.controllers.CustomerCtrl);
}
(一旦我们将控制器注册到我们的应用程序),当我们在此行中使用search.aspx
时没有错误:
<div id="page" ng-controller="CustomerCtrl as custom">