孤独プログラマー譚

孤独死が近い。

2019-01-01から1年間の記事一覧

Promise then, catchの連結

以下のコードは、どのような出力になるか? const promise = Promise.reject() promise .then(() => console.log(1)) .catch(() => console.log(2)) .then(() => console.log(3)) .catch(() => console.log(4)) .then(() => console.log(5)) .catch(() => co…

Promise 非同期メソッドの結果で処理を分岐

よくあるのが、オブジェクトをresolveし、その中に分岐用のフラグを含める。 まったく美しくない。見ててつらい。 const confess = (iLoveMai) => { console.log(iLoveMai ? '私は白石麻衣を愛しています。' : '私は白石麻衣を愛していません。' ) } const {…

Promise catch()からthen()への復帰

catch()からthen()へ。 そして、then()からcatch()へ。 const promise = Promise.resolve() promise .then(() => { console.log(1) throw new Error() }) .catch(() => { console.log(2) return }) .then(() => { console.log(3) throw new Error() }) .catc…

Promise reject と catch

以下の2つは、書き換えられる。 const foo = () => { return new Promise((resolve, reject) => reject(new Error('foo_value'))) } const bar = async () => { throw new Error('bar_value') } catchで受ける。 foo().catch((err) => console.log(err.messa…

JavaScript Promise.thenメソッドの返却値

asyncメソッドと似たような考え方でいいと思う。 const promise = new Promise(resolve => resolve()) const foo = promise.then(async () => { await new Promise(resolve => { setTimeout(resolve, 1000) }) return 'foo_value' }) const bar = promise.th…

JavaScript Promiseとasyncの書き換え

以下の2つ、Promiseとasyncメソッドは書き換えられる。 foo() { return new Promise((resolve) => { setTimeout(() => { resolve('foo_value') }, 1000) }) } async bar() { await new Promise((resolve) => { setTimeout(resolve, 1000) }) return 'bar_val…

Angular ルーティング

ルーティングの最低限の構成。 /* app-routing.module.ts */ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { FooComponent } from './foo/foo.component'; const routes: Routes = [ { path:…

Angular FormControl

FormGroup を使わないパターン。 export class AppComponent { foo = new FormControl('foo-desu', [ Validators.required, ]) } <input [formControl]="foo"> <div>value: {{foo.value}}</div> <div>error: {{foo.errors | json}}</div> FormGroup を使うパターン。 export class AppComponent { constructor(…

Angular バリデーションエラー表示

ngModel経由なら、input要素のvalue, error とも取得できる。 <input #foo="ngModel" [(ngModel)]="metas.foo" required> <div>value: {{foo.value}}</div> <div>error: {{foo.errors?.required}}</div> export class AppComponent { metas = { foo: '', bar: '', baz: '', } } ngForm経由では、input要素のvalueは取得できても、errorは取…

Angular 全て入力後に送信可能になるボタン 2

formを使わないバージョン。応用は効かせやすいかも。 <input [(ngModel)]="metas.foo"><br> <input [(ngModel)]="metas.bar"><br> <input [(ngModel)]="metas.baz"><br> <br> <div>disabled: {{disabled}}</div> <button [disabled]="disabled">Submit</button> export class AppComponent { metas = { foo: '', bar: '', baz: '', } get disabled…

Angular 全て入力後に送信可能になるボタン 1

Vue.jsに続いて、Angularでも。 テキストフィールドに全て入力完了後、disabledが解除されて送信可能になるボタン。 <form #metaForm="ngForm"> <input name="foo" [(ngModel)]="metas.foo" required><br> <input name="bar" [(ngModel)]="metas.bar" required><br> <input name="baz" [(ngModel)]="metas.baz" required><br> <br> <div>disabled: {{metaForm.invalid}}…</div></form>

Angular 複数チェックボックスを全て選択で切り替え

Vue.jsに続いて、Angularで全て選択を切り替え。 <input type="checkbox" [(ngModel)]="metas.foo">foo<br> <input type="checkbox" [(ngModel)]="metas.bar">bar<br> <input type="checkbox" [(ngModel)]="metas.baz">baz<br> <br> <input type="checkbox" [(ngModel)]="all_checked">all<br> export class AppComponent { metas = { foo: …

JavaScript オブジェクトの結合

オブジェクトの結合について、情報整理。 以下、既存のオブジェクトに、別のオブジェクトを結合する場合。 ES6で書けない時はjQueryを使う。 var nogizaka1 = { shiraishi: 'mai', akimoto: 'manatsu', } var nogizaka2 = { hori: 'miona', suzuki: 'ayane',…

JavaScript プロパティの初期化

JavaScriptの小ネタ。以下、よくあるインスタンス生成時のプロパティセット。 var personal_info = { name: 'Tom', age: '20', } function Person(personal_info) { this.name = personal_info.name this.age = personal_info.age this.indroduce_myself = f…

Vue.js Ajaxを使った連動するセレクトボックス

1つ目のセレクトボックスの項目を非同期通信で取得。 そこで選択した項目を元に、2つ目のセレクトボックスの項目も非同期で取得する。 <div id="app"> <select v-model="selected_category_id"> <option v-for="item in category_list" :value="item.id">{{ item.name }}</option> </select> <div>{{ selected_category_id }}</div> <select v-model="selected_animal_id"> </select></div>

Vue.js 全て入力後に送信可能になるボタン

テキストフィールドに全て入力完了後、disabledが解除されて送信可能になるボタン。 <div id="app"> <div><input v-model="field1"></div> <div><input v-model="field2"></div> <div><input v-model="field3"></div> <div>{{ entered_all }}</div> <button :disabled="!entered_all">submit</button> </div> new Vue({ el: '#app', data: { field1: '', field2…

Vue.js 複数チェックボックスを全て選択で切り替え

よくある「全て選択」チェックボックス。 <div id="app"> <div v-for="(item, index) in items"> <input type="checkbox" :value="item" v-model="checked_items">{{ labels[index] }} </div> <div>{{ checked_items }}</div> <input type="checkbox" v-model="checked_all">check_all<br> <div>{{ checked_all }}</div> </div> new Vue({ el: …

Vue.js 単一ファイルコンポーネントと通常使用の併用

通常使用とは何なのかというと、HTMLのscriptタグ内で、new Vue() してやること…ということにします。単一ファイルコンポーネントは使いたい。 でも、他のHTML要素の方も、Vue.jsで制御したい。 その場合、どうすればいいか、調べてもよく分からなった。例え…