Skip to content

Instantly share code, notes, and snippets.

View nantekkotai's full-sized avatar
🤡

Nobuyuki OSAWA nantekkotai

🤡
View GitHub Profile
@nantekkotai
nantekkotai / file0.txt
Created April 9, 2013 09:18
rbenvをアップデートする ref: http://qiita.com/items/c96bd00cdfefee545b5a
$ brew unlink ruby-build
$ brew install --HEAD ruby-build
@nantekkotai
nantekkotai / file0.txt
Created April 2, 2013 06:26
homebrewで入れたredisが止まってくれないとき ref: http://qiita.com/items/c338d9329604ffc58b60
$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
@nantekkotai
nantekkotai / Gemfile
Created March 7, 2013 08:39
【Railsで】Vanityのセットアップ【A/Bテスト】 ref: http://qiita.com/items/87a71c6d4a6fe971c2da
gem 'vanity'
@nantekkotai
nantekkotai / gist:4631625
Last active December 11, 2015 16:59
[knockoutjs]throttleとsubscribeの使い方

時間差で実行するthrottle

例えばフォームの値を監視するとき、入力値が常に返ってくるとその数だけイベントが発生してしまう。
knockoutでは変更が完了してから、時間設定まで付けて監視する事ができる。

<input type="text" value="" data-bind="value: instantaneousValue, valueUpdate:'afterkeydown'" />
@nantekkotai
nantekkotai / gist:4602401
Created January 23, 2013 05:49
Enterで実行する仕組みは、日本語入力の場合、工夫しないと変換入力途中に実行されてしまう。

日本語入力を考慮したEnterで実行

例えばEnterで実行した瞬間に文字列を切り取るとか、そういうことをしたとします。
日本語入力の場合は変換途中のEnterである可能性があります。
そうするとおかしな状態で切り取ってしまうかもしれません。
それを防ぐためにはどうするか。

入力状態を監視する仕組みを作るのです。

@nantekkotai
nantekkotai / gist:4601871
Created January 23, 2013 04:16
[knockoutjs]追加と削除時のイベントハンドリング

アイテム追加/削除時にアニメーションを入れるには

jQueryでアイテムを追加するときとか、slideUpしたりDownしたりfadeOutさせたりすることもあるでしょう。
knockout.jsでは通常のステップだけだと、いきなり追加されるか削除されるかしかありません。

<ul data-bind="foreach: items">
  <li><span data-bind="text: value"></span></li>
</ul>
@nantekkotai
nantekkotai / gist:4601750
Created January 23, 2013 03:45
[knockoutjs]独自のイベントを追加する.その2

jQueryUIのドラッグ&ドロップに対応させる

knockout以外のライブラリやプラグインからイベントを追加することもできます。
その1で紹介したbindingHandlersに追加する方法で実装します。

※必要なjQueryUIのライブラリを読み込むこと。

// ここでドラッグ&ドロップする要素を一時的に保持します
var _dragged;
@nantekkotai
nantekkotai / gist:4601443
Created January 23, 2013 02:53
[knockoutjs]独自のイベントを追加する.その1

フォームでEnter->イベント実行するサンプル

// knockout初期化前に以下を実行
ko.bindingHandlers.executeOnEnter = {
  init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
    var allBindings = allBindingsAccessor();
    $(element).keypress(function (event) {
      var keyCode = event.which || event.keyCode;
 if (keyCode === 13) {
@nantekkotai
nantekkotai / gist:4593890
Created January 22, 2013 11:17
[knockoutjs]フォームの即時反映

キー入力を監視するには

サジェストやオートコンプリート、あるいは文字数カウンタ機能を実装するためには、入力値が即座に反映されなければいけません。

<p>userName: <input data-bind="value: userName" /></p>
<p>Counter: <span data-bind="text: userNameCount"></span></p>
 
<script type="text/javascript">
var viewModel = {
@nantekkotai
nantekkotai / gist:4593386
Last active December 11, 2015 11:28
[knockoutjs]クリックイベントの設定

クリックイベント

knockout.jsにはイベントはそれなりにあります。
詳しくは公式ドキュメントを読んでもらうとして、ここでは一番使いどころの多い「click」イベントについて説明します。

<div>
  You've clicked <span data-bind="text: numberOfClicks"></span> times
  <button data-bind="click: incrementClickCounter">Click me</button>