我有以下代码:
main.js
angular.controller('myCtrl', function($scope, $rootScope) {
$scope.name = "Bob";
}
myservices.js
angular.factory('myService', function($http) {
var myService = {
async: function(params) {
// $http returns a promise, which has a then function, which also returns a promise
var promise = $http.get("http://myws/user/info/"+params).then(function (response) {
// The then function here is an opportunity to modify the response
console.log(response);
// The return value gets picked up by the then in the controller.
return response.data;
});
// Return the promise to the controller
return promise;
}
};
return myService;
});
如何在myService
中注入myCtrl
?考虑到它们分为两个文件。
答案 0 :(得分:1)
我们需要按顺序添加我们创建的所有脚本以运行此角度,请注意顺序:
<script src="angular.js"></script>
<script src="main.js"></script>
<script src="myservices.js"></script>
main.js
应如下所示:
var app = angular.module("MyModule", []);
app.controller('myCtrl', function($scope, $rootScope, myService) { /* implementation */})
services.js
应如下所示:
app.factory('myService', function($http) { /* implementation */});
所以在我们的main.js
中,我们正在创建一个模块来附加我们所有的服务,工厂,提供者,值,常量,控制器和指令。它还允许我们将配置和运行阶段功能放在。
模块通过以下方式实例化:
angular.module("MyModule", []);
我们提供其他依赖模块的第二个参数
如果我们需要,在使用javascript模块的情况下,我们可以再次询问模块的角度:
var app = angular.module("MyModule");
答案 1 :(得分:1)
以下是您需要做的几件事。
<ion-view>
<div class="bar bar-header item-input-inset">
<label class="item-input-wrapper">
<i class="icon ion-ios-search placeholder-icon"></i>
<input type="search" placeholder="Search">
</label>
<button class="button button-clear">
Cancel
</button>
</div>
<ion-content>
...
(如果它有不同的模块,那么你已注入主模块使用它)。module
将组件绑定到该组件,以便该模块中的服务可用。<强>代码强>
angular.module('myApp')
答案 2 :(得分:1)
确保文件都已实际加载。如何做到这一点取决于您,也许您正在使用require()
的某些实现,或者只是将HTML中的所有文件列为<script>
标记。
澄清您想要的模块结构。两者都应该是同一模块的一部分,还是它们应该是独立的模块?
相同模块:一个文件需要声明模块,另一个需要扩展它:
angular.module('Foo', []) // declares new module
.controller(..)
angular.module('Foo') // extends existing module
.factory(..)
不同的模块:
angular.module('Foo', []) // declares new module
.factory(..)
angular.module('Bar', ['Foo']) // declares new module
.controller(..) // and imports other module
注入控制器:
.controller('myCtrl', function ($scope, myService) ..
答案 3 :(得分:1)
您可以在控制器中注入服务
像:
main.js:
angular.module('myApp', []).controller('myController', ['$scope', 'myService',
function ($scope, myService) {
}
]);
myService.js:
angular.module('myApp').factory('myService', function($http) {
//service code
});
对于不同的文件但是相同的模块然后确保在使用之前加载文件。