Javascript 将服务放入不同的js文件时出错
我的两个控制器位于一个单独的js文件中,该文件与一个名为messages的服务具有依赖关系 在app.js文件中,我有2个控制器Javascript 将服务放入不同的js文件时出错,javascript,angularjs,Javascript,Angularjs,我的两个控制器位于一个单独的js文件中,该文件与一个名为messages的服务具有依赖关系 在app.js文件中,我有2个控制器 var learnModule = angular.module('myApp', []); learnModule.controller('ListCtrl', function (messages) { this.messages = messages.list; }); learnModule.controller('PostCtrl', functi
var learnModule = angular.module('myApp', []);
learnModule.controller('ListCtrl', function (messages) {
this.messages = messages.list;
});
learnModule.controller('PostCtrl', function (messages) {
this.addMessage = function (message) {
messages.add(message);
}
});
在Services.js中,我有我的服务
var myApp = angular.module('myApp', []);
myApp.factory('messages', function () {
var messages = {};
messages.list = [];
messages.add = function (message) {
messages.list.push({ id: messages.list.length, text: message });
}
return messages;
});
在模板文件的
部分,我注册了两个js文件,如下所示
<script src="../Scripts/angular.min.js" runat="server" type="text/javascript"></script>
<script src="../Scripts/Services.js" runat="server" type="text/javascript"></script>
<script src="../Scripts/app.js" runat="server" type="text/javascript"></script>
注意:如果我将服务复制到我的controller js文件(即app.js)中,应用程序工作正常
感谢您的帮助…调用
angular.module
函数有两种不同的函数
- 如果它有一个数组的第二个参数,它将尝试创建一个新模块(数组中列出了它所依赖的其他模块的名称)
- 如果没有第二个参数,它将尝试访问已经存在的模块
解决方案是只调用一次数组作为第二个参数的函数,
angular.module('myApp',[])
,并位于页面中引用的第一个文件的顶部。在其他示例中,使用不带第二个参数的表单angular.module('myApp')
访问先前创建的模块。调用angular.module
函数有两个不同的函数
- 如果它有一个数组的第二个参数,它将尝试创建一个新模块(数组中列出了它所依赖的其他模块的名称)
- 如果没有第二个参数,它将尝试访问已经存在的模块
解决方案是只调用一次数组作为第二个参数的函数,
angular.module('myApp',[])
,并位于页面中引用的第一个文件的顶部。在其他模式中,使用不带第二个参数的表单angular.module('myApp')
访问先前创建的模块。问题是,您有两个同名的模块myApp
。只需重命名第二个模块
var myApp = angular.module('mySecondApp', []);
myApp.factory('messages', function () {
var messages = {};
messages.list = [];
messages.add = function (message) {
messages.list.push({ id: messages.list.length, text: message });
}
return messages;
});
将它作为依赖项添加到first,您就可以开始了
var learnModule = angular.module('myApp', ['mySecondApp']);
learnModule.controller('ListCtrl', function (messages) {
this.messages = messages.list;
});
learnModule.controller('PostCtrl', function (messages) {
this.addMessage = function (message) {
messages.add(message);
}
});
干杯 问题是,您有两个同名的模块
myApp
。只需重命名第二个模块
var myApp = angular.module('mySecondApp', []);
myApp.factory('messages', function () {
var messages = {};
messages.list = [];
messages.add = function (message) {
messages.list.push({ id: messages.list.length, text: message });
}
return messages;
});
将它作为依赖项添加到first,您就可以开始了
var learnModule = angular.module('myApp', ['mySecondApp']);
learnModule.controller('ListCtrl', function (messages) {
this.messages = messages.list;
});
learnModule.controller('PostCtrl', function (messages) {
this.addMessage = function (message) {
messages.add(message);
}
});
干杯 您再次声明myApp。请尝试为您的服务js命名一个新名称,并将其作为依赖项添加到主模块中您再次声明myApp。尝试为您的服务js命名一个新名称,并将其作为依赖项添加到主模块中不,请保持原样,因为正如您所说,它是angularjs应用程序的“入口点”。但是,无论何时编写,
angular.module('appName')
,实际上都是在向angularjs注册应用程序。根据,如果使用已存在的名称创建模块,它将覆盖上一个模块。(所以最后获胜)不,保持原样,因为正如你所说,它是angularjs应用程序的“入口点”。但是,无论何时编写,angular.module('appName')
,实际上都是在向angularjs注册应用程序。根据,如果使用已存在的名称创建模块,它将覆盖上一个模块。(所以最后获胜。)