Javascript 带工厂、服务和控制器的角度页面
我对angular还比较陌生,正在尝试运行angular页面,但是无论我尝试什么,我都会不断地遇到一个错误,说我没有创建angular模块 无法实例化模块HotelApp,原因是: 错误:[$injector:nomod]$injector/nomod?p0=Hote。。。废话废话 我的代码如下所示Javascript 带工厂、服务和控制器的角度页面,javascript,angularjs,factory,Javascript,Angularjs,Factory,我对angular还比较陌生,正在尝试运行angular页面,但是无论我尝试什么,我都会不断地遇到一个错误,说我没有创建angular模块 无法实例化模块HotelApp,原因是: 错误:[$injector:nomod]$injector/nomod?p0=Hote。。。废话废话 我的代码如下所示 (function () { "use strict"; angular.module(APPNAME) .facto
(function () {
"use strict";
angular.module(APPNAME)
.factory('$hotelService', hotelServiceFactory);
hotelServiceFactory.$inject = ['$methodRepository', $methodRepository];
function hotelServiceFactory($methodRepository) {
var hotelServiceObject = AjaxScripts;
console.log("Hotel Service", hotelServiceObject);
}
})();
(function () {
"use strict";
angular.module(APPNAME)
.controller("HotelController", hotelController);
hotelController.$inject = ['$scope', '$hotelService'];
function TracksController($scope, $hotelService) {
angular.module('APPNAME',[]);
我最困惑的是,为什么它说我的模块没有实例化,而我在脚本和ng应用程序中都明确声明了APPNAME变量
编辑
我现在有
(function () {
"use strict";
angular.module("HotelApp", [])
.factory('$hotelService', hotelServiceFactory);
hotelServiceFactory.$inject = ['$methodRepository', $methodRepository];
function hotelServiceFactory($methodRepository) {
var hotelServiceObject = AjaxScripts;
console.log("Hotel Service", hotelServiceObject);
}
})();
但是它仍然不起作用。您在哪里创建模块。必须以这种方式创建模块。
angular.module('APPNAME',[])代码>
然后您可以使用angular.module('APPNAME')
创建控制器、工厂或。。。
但只有在创建模块[](用于依赖项注入)时,模块内部才应该存在。您在模块中留下了2nd
参数,即[]
,即DI
(依赖项注入)
angular.module('APPNAME', [])
改变这个
用这个
angular模块的第一步是应用程序的起点,您可以这样编写
(function () {
"use strict";
angular.module(APPNAME)
.factory('$hotelService', hotelServiceFactory);
hotelServiceFactory.$inject = ['$methodRepository', $methodRepository];
function hotelServiceFactory($methodRepository) {
var hotelServiceObject = AjaxScripts;
console.log("Hotel Service", hotelServiceObject);
}
})();
(function () {
"use strict";
angular.module(APPNAME)
.controller("HotelController", hotelController);
hotelController.$inject = ['$scope', '$hotelService'];
function TracksController($scope, $hotelService) {
angular.module('APPNAME',[]);
第一个参数是指您的应用程序名称,第二个参数是依赖项注入,这意味着您的应用程序进一步需要插件、服务、指令等。hotelServiceFactory。$inject
属性定义错误
//DO this
hotelServiceFactory.$inject = ['$methodRepository'];
//NOT this
//hotelServiceFactory.$inject = ['$methodRepository', $methodRepository];
function hotelServiceFactory($methodRepository) {
var hotelServiceObject = AjaxScripts;
console.log("Hotel Service", hotelServiceObject);
}
这会导致编译错误
此外,控制器声明与控制器函数名不匹配
angular.module(APPNAME)
.controller("HotelController", hotelController);
hotelController.$inject = ['$scope', '$hotelService'];
//DO this
function hotelController($scope, $hotelService) {
//NOT this
//function TracksController($scope, $hotelService) {
标题可以让问题结束。更新它。你可以点击(或复制粘贴)errors.angularjs.org链接,并解释为什么会出现错误。不管怎样,其他人已经正确地指出了这个问题。删除即时调用函数你的代码会工作的。我理解你的意思。APPNAME不是实际名称,它是一个值为app实际名称“HotelApp”的变量,然后显示完整代码,在其中使用依赖项初始化模块。变量在哪里。这应该是可行的。。。。(函数(){“使用严格”;angular.module(“HotelApp”,[]).factory(“$hotelService',hotelServiceFactory”);hotelServiceFactory.$inject=['$methodRepository'];函数hotelServiceFactory($methodRepository){var hotelservicecobject=AjaxScripts;console.log(“hotelservice”,hotelservicecobject);}}}();我尝试过这个方法,但似乎没有问题。您是否在主index.html中包含
ng app=“APPNAME”