gpt4 book ai didi

javascript - 如何使用 AngularJS 中另一个模块的函数?

转载 作者:行者123 更新时间:2023-11-28 15:46:44 26 4
gpt4 key购买 nike

我正在通过制作一个待办事项列表应用程序来学习 AngularJS。但是,我不知道如何相互使用模块。

详细来说,我的 app.js 中有这段代码:

var app = angular.module('todoApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ui.router',
'TodoItem'
]);

var TodoItem = angular.module( 'TodoItem' );
app.init = function () {
var item1 = TodoItem.newItem();
item1.title = 'Item 1';
var item2 = TodoItem.newItem();
item2.title = 'Item 2';

app.todoList = [ item1, item2
];
}

app.init();

模块TodoItem来自TodoItem.js,它是:

'use strict';

var TodoItemModule = angular.module('TodoItem', []);

function TodoItemClass() {
this.id = -1;
this.title = '';
this.detail = '';
this.endDate = null;
this.startDate = null;
}

TodoItemModule.newItem = function() {
return new TodoItemClass();
}

在应用程序的 index.html 中,我有以下代码:

<script src="scripts/app.js"></script>
<script src="scripts/controllers/main.js"></script>
<script src="scripts/controllers/todo.js"></script>
<script src="scripts/models/TodoItem.js"></script>

我相信其中没有拼写错误。

但是,我在 Chrome Javascript 控制台中收到此错误:

Uncaught Error: [$injector:nomod] Module 'TodoItem' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.2.6/$injector/nomod?p0=TodoItem

那么,我在这里做错了什么?非常感谢。

最佳答案

如果app.js需要TodoItem.js,则需要提前加载。

看起来您创建了 TodoItem 模块,但您需要注册要在其中使用的任何服务。请参阅http://docs.angularjs.org/guide/module/#configuration-blocks ,和http://docs.angularjs.org/guide/dev_guide.services.creating_services .

然后,由于将 TodoItem 指示为 todoApp 的依赖项,您将可以在您在 todoApp 中注册的任何服务、 Controller 或过滤器中访问在 TodoItem 中注册的所有服务。

关于javascript - 如何使用 AngularJS 中另一个模块的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21998335/

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