我目前正在将我的离子v1应用程序更新为离子v2,但我在基于承诺的服务方面遇到了麻烦.
angular.module('myApp.home', ['myApp.services.camera',])
.controller('HomeCtrl', function($scope, CameraService) {
$scope.getPicture = function() {
var onSuccess = function(result) {
// Some code
};
var onError = function(err) {
// Some code
};
CameraService.getPicture().then(onSuccess, onError);
};
});
Run Code Online (Sandbox Code Playgroud)
angular.module('myApp.services.camera', [])
.service('CameraService', function($q, $ionicPlatform, $cordovaCamera) {
return {
getPicture : function() {
var deferred = $q.defer();
var onSuccess = function(result) {
deferred.resolve(result);
};
var onError = function(err) {
deferred.reject(err);
};
// my options here
$ionicPlatform.ready(function() {
$cordovaCamera.getPicture(options).then(onSuccess, onError);
});
return deferred.promise;
}
}; …Run Code Online (Sandbox Code Playgroud) Ionic 2已经弃用了ionic.config.js.ionic.project现在是ionic.config.json,我现在应该将我的设置放在那里.因此,按照离子的离子代理指令(无法在任何地方找到ionic2 doc),我的ionic.config.json现在看起来像这样:
{
"name": "newapp",
"app_id": "",
"v2": true,
"typescript": true,
"proxies": [{
"path": "/api",
"proxyUrl": "https://api.service.com"
}]
}
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用.
更新:我似乎得到代理服务,但我仍然收到CORS错误.
我正在使用Subject,switchMap并.next()在http.get()触发新请求时取消先前挂起的http调用.
问题是,当我处理http错误(如超时)时_postMPCHC.next(...),html中调用的方法不再起作用...我是否需要在出错时重新创建订阅?怎么样 ?
import {Component} from '@angular/core';
import {NavController, NavParams, Toast} from 'ionic-angular';
import {Http, URLSearchParams} from '@angular/http';
import {AppSettings} from '../../appSettings';
import {Subject} from 'rxjs/Subject';
@Component({
templateUrl: 'build/pages/video/video.html'
})
export class VideoPage {
_postMPCHC: any= new Subject();
constructor(private http: Http, private nav: NavController) {
this.defineHttp();
}
defineHttp() {
var sub = this._postMPCHC.switchMap((x: string) => {
let params: URLSearchParams = new URLSearchParams();
params.set('token', AppSettings.API_TOKEN);
params.set('prog', 'mhz');
params.set('prog', 'mpchc');
params.set('action', x); …Run Code Online (Sandbox Code Playgroud) 我试图在离子2中实现谷歌地图作为细分(地图和列表).
这是我的HTML:
<ion-header>
<ion-navbar>
<button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-segment [(ngModel)]="clients">
<ion-segment-button value="map">
Map
</ion-segment-button>
<ion-segment-button value="list">
List
</ion-segment-button>
</ion-segment>
</ion-navbar>
</ion-header>
<ion-content>
<div [ngSwitch]="clients">
<div *ngSwitchCase="'map'">
<div #map id="map"></div>
</div>
<ion-list *ngSwitchCase="'list'">
<ion-item>
<h2>List Item 1</h2>
</ion-item>
</ion-list>
</div>
</ion-content>
Run Code Online (Sandbox Code Playgroud)
这是我的.scss文件:
#map {
width: 100%;
height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
当我加载应用程序时,列表段工作正常,但地图显示为白色屏幕.如果我在ion-content标签之后定义了map div标签,那么地图将在两个段中显示.如何在1段中创建地图,在其他段中列出?
我可以通过以下方式将JSON请求数据发布到服务器,但是如何使用http将XML结构化数据发布到服务器.
getAuthSeed(value) {
let params = "{'validateUsr': 'false'}";
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('params', params);
let url = 'tab-api/login/'+value.username+'/seed/false';
let options = new RequestOptions({
method: RequestMethod.Get,
url: url,
headers: headers
});
return this.http.request(new Request(options)).map(
result => {
let data = result.json();
return data;
}
)
}
Run Code Online (Sandbox Code Playgroud)
示例XML请求:
<pi:ReqPay xmlns:pi="http:schema/">
<Head ver="1.0" ts="" orgId="" msgId=""/>
<Meta>
<Tag name="PAYRE" value=""/>
</Meta>
<Txn id="" note="" custRef="" refId="" refUrl="" ts="" type="PAY|COLLECT">
<RiskScores>
<Score provider="ci" type="TXNRISK" value=""/>
</RiskScores>
<Rules>
<Rule name="MINAMOUNT" value=""/>
</Rules> …Run Code Online (Sandbox Code Playgroud) 我想在我的angular2 / ionic2项目中找出特定函数的调用者函数。.arguments.callee.caller.toString()不好运
任何的想法?
有人知道是否可以在http 2登录角度2后保存cookie?当我检查标题作为响应时,我可以看到cookie,但他们不会保存到浏览器,我无法访问它们.
我也试过直接访问'set-Cookie'但没有工作.
this.http.post(this.serverUrl+"/login/", {data: {email: email, pass: pass}})
.subscribe(res => {
let headers: Headers = res.headers;
let cook = headers.getAll('Set-Cookie')); //this is null
Run Code Online (Sandbox Code Playgroud)
我会非常高兴任何帮助我不知道怎么做并保存饼干.谢谢.
我只是想在我的IONIC 2项目中进行http post调用.当我运行离子服务时它工作正常.但是当我运行离子运行anroid以在我的设备上运行它时它给了我403(禁止)响应.
这是我的PaymentService.ts,其中已经进行了http调用
import {Http, Headers, RequestOptions} from '@angular/http';
import 'rxjs/add/operator/map';
import { Injectable } from '@angular/core';
@Injectable()
export class PaymentService {
static get parameters() {
return [[Http]];
}
constructor(private http:Http) {}
postToPaymentApi(data) {
let headers: Headers = new Headers()
headers.set('Content-type', 'application/x-www-form-urlencoded')
let options = new RequestOptions({headers: headers})
var response = this.http.post("http://test/url",data,options).map(res => res.json());
return response;
}
}
}
Run Code Online (Sandbox Code Playgroud)
为了克服这个问题,我尝试了几件事,比如
<meta http-equiv="Content-Security-Policy" content="default-src *; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' …我在离子项内部有一个离子文本区域.它显示很好,但当我按下textarea时,它会显示并隐藏键盘.而且因为键盘是隐藏的,我不能放任何文字.
这就像在我触摸屏幕之后触发了onblur事件.
这是我的代码:
<ion-item>
<ion-label stacked>Comment</ion-label>
<ion-textarea [(ngModel)]="formData.comment" name="comment" placeholder="Put any comment..."></ion-textarea>
</ion-item>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我在这里遇到角度2的麻烦。我使用返回承诺的服务,但是当我尝试检索响应时出现错误。
我读过这个问题, 这是我的代码。
这是HotelService.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
//rxjs promises cause angular http return observable natively.
import 'rxjs/add/operator/toPromise';
@Injectable()
export class HotelService {
private BASEURL : any = 'http://localhost:8080/hotel/';
constructor(private http: Http) {}
load(): Promise<any> {
return this.http.get(this.BASEURL + 'api/client/hotel/load')
.toPromise()
.then(response => {
response.json();
//console.log(response.json());
})
.catch(err => err);
}
}
Run Code Online (Sandbox Code Playgroud)
此Hotel.ts(组件)
import { Component, OnInit } from '@angular/core';
import { NavController } from 'ionic-angular';
import { HotelService } from …Run Code Online (Sandbox Code Playgroud) ionic2 ×10
angular ×8
ajax ×1
android ×1
cookies ×1
cordova ×1
google-maps ×1
html ×1
http ×1
javascript ×1
promise ×1
proxy ×1
rxjs ×1
typescript ×1
undefined ×1