Android 为什么不是';我的爱奥尼亚模式在安卓4.4设备上打开了吗?

Android 为什么不是';我的爱奥尼亚模式在安卓4.4设备上打开了吗?,android,cordova,webview,ionic-framework,angular-ui,Android,Cordova,Webview,Ionic Framework,Angular Ui,我使用的是安卓设备的离子框架(当然是cordova)。有一个模式,我正在使用的设置和东西,它打开良好的桌面浏览器与 `inic serve` 但是,在构建之后 cordova build android或ionic build android 它不会再次打开,不仅在真正的android设备中,而且在桌面浏览器中 代码如下: 对于html视图: <ion-modal-view> <ion-header-bar> <h1 class="title">

我使用的是安卓设备的离子框架(当然是cordova)。有一个模式,我正在使用的设置和东西,它打开良好的桌面浏览器与

`inic serve`
但是,在构建之后

cordova build android
ionic build android

它不会再次打开,不仅在真正的android设备中,而且在桌面浏览器中

代码如下:

对于html视图:

<ion-modal-view>
  <ion-header-bar>
    <h1 class="title">Settings</h1>
    <div class="buttons">
      <button class="button button-clear" ng-click="hideModal()">Done</button>
    </div>
  </ion-header-bar>
    <ion-content class="padding">
        <form name="settingsForm" novalidate>
            <ion-item class="item-input">
                <label class="input-label">IP Address</label>
                <input type="text" ng-model="vm.ipAddress" name="ipAddr" required />
            </ion-item>
            <ion-item class="item-input">
                <label class="input-label">Port Number</label>
                <input type="text" ng-model="vm.portNum" name="portNum" required />
            </ion-item>
            <a class="button button-block button-positive" ng-click="vm.startCommand()" 
                ng-disabled="settingsForm.ipAddr.$invalid || settingsForm.portNum.$invalid && !vm.isListening">{{vm.btnString}}</a>
        </form>
        <br />
        <ion-list>
            <ion-item class="item-divider">Messages from socket ws://{{vm.ipAddress}}:{{vm.portNum}} -></ion-item>
            <ion-item class="item-text-wrap" ng-repeat="msg in vm.msgs">{{msg}}</ion-item>
        </ion-list>
    </ion-content>
</ion-modal-view>

设置
多恩
IP地址
端口号
{{vm.btnString}}

来自套接字ws://{{vm.ipAddress}}:{{vm.portNum}}的消息-> {{msg}}
对于控制器:

/// <reference path="../_reference.ts" />

module app.settings {
    interface IModelScope extends angular.IScope {
        model: Ionic.IModal;

        showModal(): void;
        hideModal(): void;
    }

    interface ISettingsCtrl {
        ipAddress: string;
        portNum: number;
        msgs: string[];
        btnString: string;

        startCommand(): void;
    }

    class SettingsCtrl implements ISettingsCtrl {
        ipAddress: string;
        portNum: number;
        msgs: string[] = [];
        btnString: string = 'Start';
        private _gotDirective: boolean;

        private _isListening: boolean = false;

        static $inject = ['$scope', 'SocketSvc', '$ionicPopup', '$ionicModal', '$ionicLoading'];
        constructor(private _scope: IModelScope,
            private _socketSvc: app.service.ISocketSvc,
            private _ionicPopup: Ionic.IPopup,
            private _ionicModel: Ionic.IModal,
            private _ionicLoading: Ionic.ILoading) {
            _ionicModel.fromTemplateUrl('../../settings/settings.html', {
                scope: _scope,
                animation: 'slide-in-up'
            }).then(m => {
                _scope.model = m;
            });

            _scope.showModal = () => {
                _scope.model.show();
            }

            _scope.hideModal = () => {
                _scope.model.hide();
            }
        }

    angular.module('app')
        .controller('SettingsCtrl', SettingsCtrl);
}
//
模块应用程序设置{
接口IModelScope扩展angular.IScope{
模型:离子型伊莫代尔;
showModal():void;
hideModal():void;
}
接口设置SCTRL{
IP地址:字符串;
portNum:数字;
msgs:string[];
btnString:字符串;
startCommand():无效;
}
类设置SCTRL实现ISettingsCtrl{
IP地址:字符串;
portNum:数字;
msgs:string[]=[];
btnString:string='Start';
private _got指令:布尔;
private _isListening:boolean=false;
静态$inject=['$scope','SocketSvc','$ionicPopup','$IonicModel','$ionicLoading'];
构造函数(专用范围:IModelScope,
私有_socketSvc:app.service.ISocketSvc,
private _ionicPopup:Ionic.IPopup,
private _Ionic模型:Ionic.IModal,
专用离子加载:离子加载){
_ionicModel.fromTemplateUrl('../../settings/settings.html'{
范围:_范围,
动画:“向上滑动”
}).然后(m=>{
_scope.model=m;
});
_scope.showmodel=()=>{
_scope.model.show();
}
_scope.hideModal=()=>{
_scope.model.hide();
}
}
角度。模块('app')
.控制器(“设置SCTRL”,设置SCTRL);
}

是的,我使用的是typescript

@GuillemVicens嗯,事实证明,ionic framework starter为您提供了一个很好的起点,但对cordova不够友好。在ionic项目中,我将我的settings.html放在

/www/settings/settings.html

和settings.ctrl.ts

/www/scripts/settings/settings.ctrl.ts

所以我用

_ionicModel.fromTemplateUrl('../../settings/settings.html', {
    scope: _scope,
    animation: 'slide-in-up'
}
尝试指定模态的模板。但是在cordova中,它打包了所有

www

进入

资产/www

巫婆应该很好,因为它仍然拥有所有的等级制度(事实证明不是这样)

所有脚本都会在

/assets/www

目录,所以如果您切换

。/../settings/settings.html
进入
/settings/settings.html

它会很好用的


对于没有太多时间的用户,脚本在浏览器中运行,就在它自己的目录下,但在android中,它运行在
/www/
目录下,因此请确保使用正确的相对寻址。

您能指定什么意思不会再次打开吗?您看到任何错误吗?您是否尝试使用verbose标志进行构建(
cordova-d build android
)?@GuillemVicens我找到了答案,请参见下面的答案。谢谢你的答案。很高兴你找到了。别忘了接受你自己的答案,这样其他人可以很快看到你的问题有了答案。:-)