【问题标题】:How to call Android method from AngularJS directive?如何从 AngularJS 指令调用 Android 方法?
【发布时间】:2016-04-27 13:27:36
【问题描述】:

我有使用 Angularjs 指令的 html,这个 html 文件在 Android WebView 中使用,我想从这个指令调用 Android 方法 (How to call Android method from JS)

这是我的指令,

return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            scope.$watch('controller.isReady', function (value) {
                if (value === true) {
                    try {
                        Android.isReady();
                    } catch (e) {}
                }
            });  
        }
    }

当我使用 Typescript 时,显然我收到一条错误消息,指出 Android 未定义。即使有纯 AngularJS,Android 对象仍然是未定义的。

有没有办法让它工作,这样我就可以从 AngularJs 调用 Android 方法?

【问题讨论】:

    标签: javascript android angularjs typescript


    【解决方案1】:

    您需要declare Android 对象。

    interface AndroidApi {
        isReady(): void;
    }
    
    declare var Android: AndroidApi;
    

    那么Android.isReady() 对编译器来说是有意义的。


    编辑

    这是ambient declarations 的更好资源。

    【讨论】:

    • 感谢您的回答。尽管这解决了编译问题,但似乎以这种方式创建了一个新对象并覆盖了android本机代码中定义的Android对象,因此在android应用程序中实际上没有调用该方法..虽然declare 似乎不应该那样做?
    • @vtorosyan 这不应该发生。 declare 语句不包含在编译器的 javascript 输出中。检查您的 js 文件是否确实如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 2016-09-08
    • 1970-01-01
    • 2014-07-28
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多