我的Ionic框架应用程序中有一个popover,带有选项:共享和删除.我需要在选择删除选项时显示确认弹出窗口,但我不知道如何.
如何才能做到这一点?我是否需要为弹出窗口创建单独的控制器?我已经从ActionSheet做了一个弹出窗口,但这有点不同.
这是控制器:
$ionicPopover.fromTemplateUrl('templates/popover.html', {
scope: $scope
}).then(function(popover) {
$scope.popover = popover;
});
// Triggered on a button click, or some other target
$scope.openPopover = function($event) {
$scope.popover.show($event);
};
Run Code Online (Sandbox Code Playgroud)
这是popover模板:
<ion-popover-view style="height: 120px">
<ion-content>
<div class="list">
<a class="item">
Compartir
</a>
<a class="item">
Eliminar
</a>
</div>
</ion-content>
</ion-popover-view>
Run Code Online (Sandbox Code Playgroud) 我需要的是在Ionic应用程序的页面框架内加载HTML代码,而无需打开新窗口或覆盖页面的其余部分.
我们的想法是拥有一个打开网页的框架,而不会覆盖或破坏页面的其余部分,如标题,按钮等.
基本上,我想做的是相当于Ionic框架应用程序中的Android WebView.
这可能吗?
没有太多代码,是消息应用程序的简单"消息详细信息"页面,只是消息必须显示为网页.
<ion-view view-title="Detalles de mensaje" class="discover-page">
<ion-nav-buttons side="right">
<button class="button button-icon icon ion-navicon-round" ng-click="openPopover($event)">
</button>
</ion-nav-buttons>
<ion-nav-buttons side="left">
<button class="button button-icon icon ion-ios7-arrow-back" ng-click="goBack()">
</button>
</ion-nav-buttons>
<ion-content scroll="false">
</ion-content>
</ion-view>
Run Code Online (Sandbox Code Playgroud)
我需要在顶部按钮和下面的webview显示标题.
我需要在按下按钮后按下一个按钮,按下按钮后再按下按钮,只有再次按下按钮才会停用.
有一个类似的问题,但它只适用于图标按钮.(如何添加具有离子开启/离子关闭功能的导航栏按钮).
编辑
我不能使用切换按钮,它需要是一个常规的按钮(在这种情况下是一个离子按钮轮廓),按下时保持活动状态.
这是一些代码:
<div class="botones">
<div class="row">
<div class="col">
<button class="button button-outline button-block button-positive">
Promociones
</button>
</div>
<div class="col">
<button class="button button-outline button-block button-energized" >
Aprobados
</button>
</div>
<div class="col">
<button class="button button-outline button-block button-assertive" >
Alerta
</button>
</div>
<div class="col">
<button class="button button-outline button-block button-balanced" >
ATM
</button>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如您所见,是一个简单的水平按钮阵列.他们假设充当消息收件箱的过滤器,因此当过滤器处于活动状态时,他们必须保持按下(最多一个).像一个标签,但不完全.
主要问题是,如何访问按钮的激活状态,以便我可以将其激活.
由于平台的工作原理,导航栏有Android的默认大小和iOS的默认大小.我需要在Android版本中使nav-var更大,以达到所需的审美目的.到目前为止,我只能用CSS改变文本大小和颜色,但不能改变条形本身的大小.
是可以改变它还是设计不可改变?
我的Android应用程序在后台没有收到推送通知,它应该根据文档.
Android设备上的Android应用程序无需运行即可接收消息.只要应用程序设置了正确的广播接收器和权限,系统就会在消息到达时通过Intent广播唤醒Android应用程序.
尝试不同的通知发现它确实在关闭时收到推送通知,当且仅当通知包含属性"message"时,如果没有,它只是丢弃它.(推送通知只是JSON对象).
我的通知包含所有类型的属性,包括"alert","id"和"title",但只有"message"才能让Android唤醒应用.
示例通知不起作用:
{ event: 'message',
from: '947957531940',
collapse_key: 'do_not_collapse',
foreground: true,
payload:
{ alert: 'Mensaje de Prueba',
title: 'Titulo Mensaje de Prueba' } }
Run Code Online (Sandbox Code Playgroud)
例如通知工作:
{ event: 'message',
from: '947957531940',
message: 'Contenido del mensaje de prueba.',
collapse_key: 'do_not_collapse',
foreground: true,
payload:
{ alert: 'Mensaje de Prueba',
title: 'Titulo Mensaje de Prueba',
message: 'Contenido del mensaje de prueba.' } }
Run Code Online (Sandbox Code Playgroud)
这是Android标准设计还是我在我的应用程序中做错了什么?
我的应用程序是使用Ionic与Cordova开发的.
PD:请原谅我的英语.
编辑:
这是app.js中.run模块内的Android推送代码,因为ng-cordova指令指定:
if (ionic.Platform.isAndroid()){
var …Run Code Online (Sandbox Code Playgroud) android push-notification phonegap-plugins cordova ionic-framework
我按照Ionic框架的教程学习如何构建应用程序:https://thinkster.io/ionic-framework-tutorial/ 并且它运行良好.
然后我开始添加功能,比如一个带有iframe标签的页面,它在android模拟器中也有效.但是当我从头开始构建我自己的应用程序时,iframe仅在您使用ionic serve --lab运行应用程序时才有效,它在模拟器或真正的Android设备中不起作用.
我的应用程序和示例教程之间的主要区别在于本教程是使用Ionic v1.0.0-beta.14(我认为Apache Ant)构建的,而我的应用程序是使用Ionic v1.0.0-rc.4
有没有办法来解决这个问题?
这是代码,很简单:
<ion-view view-title="Detalles de mensaje" class="detallesWV-page">
<ion-nav-buttons side="right">
<button class="button button-icon icon ion-navicon-round" ng-click="openPopover($event)">
</button>
</ion-nav-buttons>
<ion-content scroll="false">
<iframe src="http://www.cnn.com/" height="400px" width="350px"></iframe>
<div class="row">
<div class="col">
<button class="button button-assertive" ng-class="" ng-click="openPage()">
{{ 'NO SE MUESTRA CONTENIDO' }}
</button>
</div>
</div>
</ion-content>
</ion-view>
Run Code Online (Sandbox Code Playgroud) 我在一个服务中进行了 HTTP 调用,就像它应该的那样,并且在该服务中我向另一个服务发送错误通知。
出于某种原因,如果我在 catchError 管道内进行服务通知调用,它可以正常工作,但如果我在错误处理程序函数内进行它,则它不起作用,不仅如此,错误处理程序内的其余代码是打断了。
例子:
// error message handler
// can not be used inside handleError()
private errorMessageGrowl() {
this.messageService.add({
severity: 'error',
summary: 'Service Error',
detail: 'An error has occurred'
});
}
// error handler
private handleError(error: HttpErrorResponse) {
// this works fine
console.log('FLAG 1');
// THIS DOES NOT WORK
this.errorMessageGrowl();
// THIS IS NEVER CALLED
console.log('FLAG 2');
// return an ErrorObservable with a user-facing error message
return new ErrorObservable(
'Something bad happened; please try again …Run Code Online (Sandbox Code Playgroud) 我正在使用Ionic框架和AngularJS构建应用程序.它曾经运行良好,现在它在模拟器和Android设备中启动时立即崩溃.奇怪的是它在Ionic View应用程序(http://view.ionic.io/)中运行良好.logcat说错误是NullPointerException.
真正让我担心的是,我没有做任何重大改变,另一个应用也开始失败了.Ionic Cordova如何失败?
崩溃部分的完整logcat说:
--------- beginning of crash
E/AndroidRuntime( 2227): FATAL EXCEPTION: main
E/AndroidRuntime( 2227): Process: com.ionicframework.notpush921844, PID: 2227
E/AndroidRuntime( 2227): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ionicframework.notpush921844/com.ionicframework.notpush921844.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CordovaPlugin.privateInitialize(java.lang.String, org.apache.cordova.CordovaInterface, org.apache.cordova.CordovaWebView, org.apache.cordova.CordovaPreferences)' on a null object reference
E/AndroidRuntime( 2227): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
E/AndroidRuntime( 2227): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
E/AndroidRuntime( 2227): at android.app.ActivityThread.access$800(ActivityThread.java:144)
E/AndroidRuntime( 2227): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
E/AndroidRuntime( 2227): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 2227): at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime( 2227): at android.app.ActivityThread.main(ActivityThread.java:5221)
E/AndroidRuntime( 2227): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( …Run Code Online (Sandbox Code Playgroud) android phonegap-plugins cordova ionic-framework cordova-plugins
我还没有掌握JavaScript,我想做同样的事情(如何在Javascript中合并两个数组并重复删除项目),但是使用对象数组并根据唯一ID属性过滤重复项.
我已经用这个问题的答案中的一个做了,但它效率很低.
这是我的解决方案:
var mezclaArreglo = function (array) {
var a = array.concat();
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
if(a[i].hid === a[j].hid)
a.splice(j--, 1);
}
}
return a;
};
var old =
[{ hid: 'MTQzNTc1OTcyMzk1ODI3OTMyMjI3NDcyNzc0Njg0NDI5',
number: '1',
payload: { style: 'WebView', type: 'type1' }},
{ hid: 'MTQzNTc1OTczMDA1MDgwMTcwNzg3NjM4MDUzMjk3OTk3',
number: '2',
payload: { style: 'WebView', type: 'type1' }},
{ hid: 'MTQzNTc1OTczNDMxNzQ1NDI2NzUwOTA0ODgwNDY0MDc3',
number: '3',
payload: { style: 'WebView', type: 'type1' }}
];
var newA =
[{ hid: …Run Code Online (Sandbox Code Playgroud) 我需要数字只有2位小数(如钱),我使用这个:
Number(parseFloat(Math.trunc(amount_to_truncate * 100) / 100));
Run Code Online (Sandbox Code Playgroud)
但我不能再支持数学库了.
如果没有数学库并且舍入小数,我怎样才能实现这一目标?
我正在尝试创建一个下拉菜单,其中包含从图标按钮显示的"共享"和"删除"选项,但Ionic不支持开箱即用.
有问题的按钮是这样的:
<button class="button button-icon icon ion-navicon-round" ng-click="show()">
</button>
Run Code Online (Sandbox Code Playgroud)
我检查了问题(离子如何在按钮点击时显示选项下拉列表),但它没有帮助.
也许我需要一些Angular.js技巧?我是Angular.js和Ionic框架的新手.
构建我的Ionic应用程序的界面我有一个问题,它根据你在哪里运行它呈现不同.每当我修理一些东西,我最终都会破坏别的东西.
以下是我正在开发的邮件收件箱的样子:
HTML代码是这样的:
<ion-view hide-back-button="false" view-title="Buzón de Mensajes" class="buzon-page">
<!-- <ion-nav-bar> </ion-nav-bar> -->
<ion-nav-buttons side="right">
<button class="button button-icon icon ion-android-exit" ng-click="cerrarSesion()">
</button>
</ion-nav-buttons>
<div class="superior">
<div class="list list-inset" >
<label class="item item-input">
<i class="icon ion-search placeholder-icon"></i>
<input type="text" placeholder="Buscar">
</label>
</div>
<div class="botones">
<div class="row">
<div class="col">
<button class="button button-outline button-block button-positive">
Promociones
</button>
</div>
<div class="col">
<button class="button button-outline button-block button-energized" >
Aprobados
</button>
</div>
<div class="col">
<button class="button button-outline button-block …Run Code Online (Sandbox Code Playgroud) 我有一个带有HTTP GET请求的工厂,我使用promises作为文档说我应该使用$ q服务,但它返回一个空的承诺:
App.factory('dataFactory', ['$rootScope','$http','$q', function($rootScope,$http,$q) {
// Objeto del factory
var fac = {};
// Funcion que obtiene un mensaje completo
fac.obtenerListaMensajes = function(compania,userhid){
var deferred = $q.defer();
$http({
method: 'GET',
url: urlListaMensajes,
params: {company:compania,userhid:userhid}
}).
then(function(response) {
deferred.resolve(response.data.messages);
console.log(JSON.stringify(deferred.promise));
}, function(error) {
deferred.reject(error);
});
return deferred.promise;
};
return fac;
}]);
Run Code Online (Sandbox Code Playgroud)
控制器:
App.controller('MailFolderController', ['$scope','$rootScope','dataFactory', '$stateParams', function($scope, $rootScope, dataFactory, $stateParams) {
// Variables de PRUEBA
var user_prueba = 'MTQzMjU4NjUyNDcxMzczNzQwNjE3MTg1ODMxMDY5OTQ2';
var company_prueba = 'development';
$scope.mails = dataFactory.obtenerListaMensajes(company_prueba,user_prueba);
}]);
Run Code Online (Sandbox Code Playgroud)
$ scope.mails中的最终值是:
{"$$state":{"status":0}} …Run Code Online (Sandbox Code Playgroud)