如何在控制器中使用此角度工厂
How to use this angular factory in controller?
工厂:
factory('cordovaReady', function () {
return function (fn) {
var queue = [];
var impl = function () {
queue.push(Array.prototype.slice.call(arguments));
};
document.addEventListener('deviceready', function () {
queue.forEach(function (args) {
fn.apply(this, args);
});
impl = fn;
}, false);
return function () {
return impl.apply(this, arguments);
};
};
})
我在另一家工厂用过这个工厂:
return {
getCurrentPosition: cordovaReady(function (onSuccess, onError, options) {
//
}
}
当deviceReady事件被激发时,cordovaReady工厂将执行传递的回调。我的问题是如何在控制器中使用它?
我只试过
.controller( 'HomeCtrl', function HomeController($scope, cordovaReady) {
cordovaReady(function(){
//do stuff
});
});
但这并没有奏效。没有控制台错误。有什么想法吗?
我通过包装像这样的因子来解决它
.factory('aUseCase', function ($q, $rootScope, cordovaReady) {
return {
doSomething: cordovaReady(function () {
//do stuff
})
};
})
@artworkad:的更好版本
.factory('aUseCase', ['$q', '$rootScope', 'cordovaReady', function ($q, $rootScope, cordovaReady) {
return {
doSomething: cordovaReady(function () {
//do stuff
})
};
}])
不要忘记显式注入依赖项,否则缩小此代码段时会出现问题。
您确定您的依赖项正在注入控制器中吗?
var MyController = function($scope, cordovaReady) {
...
}
MyController.$inject = ['$scope', 'cordovaReady'];
在控制器中,您需要声明一个函数才能使用cordovaReady
myApp.controller("salaryCalculatorCtr", ['$scope', 'cordovaReady'
, function ($scope, cordovaReady) {
var initApp= cordovaReady(function () {
//do something
});
initApp();
}]);
相关文章:
- Ionic将firebase注入工厂,同时将控制器和服务保存在不同的文件中
- 使用2个控制器管理工厂JSON$http数据
- Http服务工厂将未定义的返回到Angular中的控制器
- AngularJS控制器在注入工厂时抛出错误
- 异步加载角度控制器和工厂
- 将工厂服务数据发送到控制器,以便在视图中使用
- 如何将控制器http调用转换为接受参数的服务/工厂模式
- 我是否需要将工厂调用放在控制器的函数中
- 工厂和控制器之间的“绑定”
- Angular,设置一个回调函数,用于在工厂和控制器之间更新
- 如何将数据从 angularJS 工厂填充到控制器
- 使用工厂/服务在控制器AngularJS之间推送数组中的数据
- 可以从控制器更新工厂,但不能从指令更新
- angular.js:13424 ReferenceError:在控制器中使用工厂方法时未定义索引
- 如何在angular js中将数据从工厂传递到控制器
- Angulrjs:控制器不会通过带有“as”语句的工厂发送值
- AngularJS:将逻辑部分从控制器带到服务(工厂)
- 带有工厂、服务和控制器的角度页面
- 未知的供应商factoryprovider <-工厂<-控制器angular js
- 模拟工厂控制器测试