在角度控制器

时间:2016-05-25 21:12:43

标签: javascript angularjs cordova emojione

我有一个带AngularJs 1.5.5,OnsenUI 2和EmojiOne的PhoneGap应用程序。

我正在尝试访问角度控制器内的emojione变量:

ons.bootstrap.controller('AppController', ['$scope', '$timeout','$http', '$sce', function ($scope, $timeout, $http, $sce) {

    emojione.imageType = 'svg';
    emojione.sprites = true;
    emojione.imagePathSVGSprites = '../res/sprites/emojione.sprites.svg';
    ...

我稍后也会进行一些函数调用。

当我在我的电脑上运行时,它正在按预期工作,但无法在Android上解析“emojione”(未定义)。 这是我第一次使用angularjs和JavaScript,所以它可能非常简单。

2 个答案:

答案 0 :(得分:1)

在处理angularjs和标准javascript库时,我喜欢创建一个模块和工厂,只是为了访问根变量,就像你想要做的那样:

angular.module('emojioneModule', [])
.factory('emojione', function($window) {
    return $window.emojione;
});

这允许你注入引用,并允许你模拟emojione进行单元测试,因为你可以注入一个模拟。

ons.bootstrap.controller('AppController', ['$scope', '$timeout','$http', '$sce', 'emojione', function ($scope, $timeout, $http, $sce, emojione) {

    emojione.imageType = 'svg';
    emojione.sprites = true;
    emojione.imagePathSVGSprites = '../res/sprites/emojione.sprites.svg';
    ...

但是,您可以只注入$ window,然后直接从那里访问它。

答案 1 :(得分:1)

你是从cdn加载emojione库吗? 手机有互联网接入吗?