function getPromise() {
return new Promise((resolve,fail)=> {
// что либо асинхронное
setTimeout(()=>resolve(4),1e3)
})
}
getPromise().then((d)=>console.log(d))
Promise.all([
httpFactory.get(`reward/${idReward}/view`)
.then(d=> {
this.reward = d.data;
this.term = dictFactory.termsDelivery[this.reward.delivery_rules].name;
this.reward.date = handleDataFactory.getIntervalDate(this.reward.send_date_from,this.reward.send_date_to);
// осталось наград
// sell_count == 0 это бесконечность наград
this.amountRewD=this.reward.sell_count-(this.reward.collected_count || 0)
}),
httpFactory.getAuth()
.then(d=> {
// возвращает 'no' если нет регистрации или она устарела
// под логином возвращает число денег на счету начиная от 0
this.isAuth = d.data;//===false? false:d.data;
// если фронт под логинон а сервер нет, то
if (this.isAuth == 'no' && authFront) userFactory._reLogin(true);
})
]).then(d=> {
this.getAmountRewD()
});
this.$onChanges = (changes)=> {
if(changes.nameOfBinding && changes.nameOfBinding.currentValue ) {
var element = $compile(changes.nameOfBinding.currentValue)($scope);
$element.append(element )
}
}
describe('под логином /', function () {
it(`нулевого счета ${vars.userName}.(не)доступность кнопки отправить + отправка на шлюз`,function () {
$('login-button').click();
$('#login_username').sendKeys(vars.userName);
$('#login_password').sendKeys(vars.password,protractor.Key.ENTER);
// нет чекбокса внутреннего аккаунта
expect(exist_checkboxFromCAccount()).toBe(false);
// доступность кнопки
expect(notLoginOuterButton.getAttribute('disabled')).toBe(null);
// иду на шлюз/отправляю значения инпутов
notLoginOuterButton.click();
browser.getCurrentUrl().then(function (url) {
// url должен содержать адрес шлюза а не локальный
// он должен содержать и адрес возврата
expect(/secure\.onpay\.ru/i.test(url) && !/localhost/i.test(url)).toBe(true);
});
});
});
<input *ngIf="i!==texts.length-1" type="text" name="{{i}}" ngModel [id]="i" (ngModelChange)="onValueChange(f,i)">
и обработчик в контроллере
onValueChange(f.i) {
this.valueChanged.emit(f[i]);
}
<tr *ngFor="let row of table['1'] | paginate: { itemsPerPage: 5, currentPage: currentPage}">
<td data-text="Номер карты" ngIf="row.ref_number">{{row.ref_number}}</td>
<td data-text="Личный товарооборот в баллах">{{row.my_bonus}}</td>
<td data-text="Товарооборот сети в баллах">{{row.ref_bonus}}</td>
<td data-text="Статус">
<label class="label" [ngClass]="{
'label-danger':row.status.id===0,
'label-success':row.status.id===1,
'label-info':row.status.id===2,
'label-warning':row.status.id===3}">{{row.status.name}}</label>
</td>
</tr>
import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import {HttpService} from "../modules/transfer-http/transfer-http";
@Injectable()
export class SharedService {
constructor(public httpService:HttpService) {}
/* это просто для примера для удобства понимания что делать
private emitMessageSource;
public messageListener$;
public emitMessage;
makeMessageListener() {
this.emitMessageSource = new Subject<any>();
this.messageListener$ = this.emitMessageSource.asObservable();
this.emitMessage = (newValue: any) => {
this.emitMessageSource.next(newValue);
}
}
killMessageListener() {
this.emitMessageSource = undefined;
this.messageListener$ = undefined;
this.emitMessage = undefined
}*/
// 1)в родителе создать слушателя:
// var name = 'Message'; this.sharedService.makeProxy(name);
// 2)подписаться: this.message$ = this.sharedService[name + 'Listener$'].subscribe(text => {console.log(text);});
// 3)в ребенке: отослать данные this.sharedService['emit' + 'Message']('Data from child');
// 4)в родителе не забыть убить слушателя: this.sharedService.killListener('Message')
makeProxy(name:string,dataSubject={}) {
/*
* if you have a component that listens to the isLoggedIn Observable after we already
* call the next method, with simple Observable or Subject the component will not
* get any data. That’s why we need the BehaviorSubject
*
* Mark Pieszak comment
use .share() when creating the Observable, so that your async pipes
don’t create multiple subscriptions.
isLoggedIn() : Observable<boolean> {
return this.isLoginSubject.asObservable().share();
}
*/
this['emit' + name + 'Source'] = new BehaviorSubject<any>(dataSubject);
// сюда подписываемся и ...
this[name + 'Listener$'] = this['emit' + name + 'Source'].asObservable().share();
// ... обновляем значение
this['emit' + name] = (newValue: any) => {
this['emit' + name + 'Source'].next(newValue);
}
}
killListener(name) {
this['emit' + name + 'Source'] = undefined;
this[name + 'Listener$'] = undefined;
this['emit' + name] = undefined
}
}