集成AngularJS和Bridgeit.js(移动网络应用程序)

Moh*_*dey 9 javascript mobile angularjs

我正在开发一个angularJS网络应用程序,我需要从移动设备扫描一个包,我正在使用bridgeit.

在角度我写了以下代码来执行功能,但它似乎不起作用.

HTML代码:

<input id="inp" />
<button id="scan" ng-click="scan()"> Scan </button>
Run Code Online (Sandbox Code Playgroud)

JS代码:

// inside angular controller
$scope.scan = funcction() {
    bridgeit.scan('scan', 'window.scan');
}

// in global scope
window.scan = function(event) {
    alert(event.data);
}
Run Code Online (Sandbox Code Playgroud)

结果:bridgeit将能够扫描qr /条形码,但不会返回值.

Moh*_*dey 2

经过多次尝试,我发现问题出hashtags在 URL 上。

让我们举一个使用相同代码的例子,

// inside angular controller
$scope.scan = funcction() {
    bridgeit.scan('scan', 'bridgeitCallback');
}

// in global scope
window.bridgeitCallback = function(event) {
    alert(event.data);
}
Run Code Online (Sandbox Code Playgroud)

我有一个网址,例如,http://stackoverflow.com/#question我在该页面内有一个扫描字段。因此,当我扫描条形码时,它会将 URL 更改为,例如,

http://stackoverflow.com/#c=scan%3Fid%3Dscan%26&r=http%3A//stackoverflow.com%23icemobilesx&o=enc%3Dbase64&h=%26h%3D%2523/question%26c%3DbridgeitCallback%26seq%3D1432552876578

更清楚,

http://stackoverflow.com/#c=scan{{some_uri_encode_characters}}/{{your_route,mine_is question}}/{{bridgeit_callback_method}}
Run Code Online (Sandbox Code Playgroud)

因此,它永远无法成功POST回调。

我刚刚在 Angular 中启用了 html5Mode,

$locationProvider.html5Mode(true);
Run Code Online (Sandbox Code Playgroud)

一切都像魅力一样。

希望它也能帮助未来的用户。