如何在另一个控制器的createAdmobBanner
函数中运行工作代码?
angular.module('starter', ['ionic', 'starter.controllers'])
.run(function ($ionicPlatform) {
$ionicPlatform.ready(function () {
var admobid = {};
if (/(android)/i.test(navigator.userAgent)) {
admobid = {
banner: 'ca-app-pub-3815248714018431/123456789'
};
}
function createAdmobBanner() {
AdMob.createBanner({
adId: admobid.banner
adSize: 'SMART_BANNER',
position: 8
});
}
createAdmobBanner();
});
})
如果我只在控制器中执行createAdmobBanner
,则createAdmobBanner()
未定义。我试过了$rootScope
,但插件看起来不适用。
答案 0 :(得分:1)
您需要将其添加到a service
或附加在$rootScope
,
$ rootScope解决方案 - 实施起来更快,但“脏”
.run(function($ionicPlatform,$rootScope) { //add $rootScope dependency injection
$rootScope.createAdmobBanner = function(){
AdMob.createBanner( { adId:admobid.banner
adSize: 'SMART_BANNER',
position:8
});
}
$rootScope.createAdmobBanner()
进入您的控制器,添加依赖项$rootScope
并调用您的函数$rootScope.createAdmobBanner
服务解决方案 - 清洁&可重复使用的
答案 1 :(得分:0)
尝试定义外部角度服务/工厂,并使用依赖注入为您需要的任何控制器提供此服务。 这是以这种方式共享通用逻辑或数据的好习惯。
修改强>
angular.module('starter', ['ionic', 'starter.controllers']);
angular.module('starter').factory('bannerFactory',function(){
return {
createAdmobBanner: function(){
window.plugins.AdMob.createBanner({ adId:admobid.banner
adSize: 'SMART_BANNER',
position:8
});
}
}
});
angular.module('starter').controller('anyController',['bannerFactory', function(bannerFactory){
bannerFactory.createAdmobBanner();
}]);
angular.module('starter').run(function ($ionicPlatform,bannerFactory) {
$ionicPlatform.ready(function () {
bannerFactory.createAdmobBanner();
});
});
答案 2 :(得分:0)
我刚发现此链接here。试试看。重要的代码如下所示:
$ionicPlatform.ready(function() {
admob内容在var admob = window.plugins.AdMob;
范围内,定义如下 /*not shown: char north[] = "NORTH";*/
这有帮助吗?