<div class="v-cook-selector" ref="vCookSelector">
<transition name="fade">
<article class="js-cook-selector-pref" v-show="opened">
<div class="responsive-container">
<header>
<div class="header_wr">
<div class="title_wr">
<a href="#" class="back" @click.stop="close"></a>
<h1 class="header_title">料理を選ぶ</h1>
</div>
</div>
</header>
<main>
<h2 class="page_title02">料理を選ぶ</h2>
<ul class="cook_list">
<li v-for="cook in cooks">
<a href="#" @click.stop="selectCook(cook)">
<p>[[ cook.name ]]</p>
<img :src="image(cook)" :alt="cook.name">
</a>
</li>
</ul>
</main>
</div>
</article>
</transition>
</div>
<script>
$(function () {
var vCookSelector = new Vue({
el: '.v-cook-selector',
delimiters: ['[[', ']]'],
data: function () {
return {
{# // trueならエリア選択画面を表示 #}
opened: false,
{# // 選択可能なcook、location #}
cooks: [],
{# // 選択したcook #}
selectedCook: null,
{# // location選択後に実行されるcallback #}
callback: null,
};
},
created: function () {
this.refreshCook();
},
computed: {
},
methods: {
open: function (callback) {
this.opened = true;
this.callback = callback;
},
close: function () {
this.opened = false;
},
refreshCook: function () {
var self = this;
$.ajax({
url: '{{ path('api_categories_get_collection') }}',
headers: {
'Accept': 'application/json',
},
}).done(function (data) {
self.cooks = data;
}).fail(function () {
alert('料理の取得に失敗しました。ページを再読み込みしてください。');
});
},
selectCook: function (cook) {
this.selectedCook = cook;
if (typeof this.callback === 'object' || typeof this.callback === 'function') {
this.callback(this.selectedCook);
}
this.close();
},
image: function (data) {
if (typeof data.image === 'undefined') {
return '/img/no-image.jpeg';
} else if (! data.image) {
return '/img/no-image.jpeg';
} else {
return data.image;
}
}
},
});
$(document).on('click', '.js-cook-selector', function () {
var self = this;
{# // .js-cook-selectorをクリックするとエリア選択画面を表示 #}
vCookSelector.open(function (cook) {
{# // 呼び出し元の要素にはlocationの名称を日本語で入れる #}
$(self).val(cook.name);
{# // 選択したlocationのIDを入れる対象の要素をdata属性から取得したセレクタで取得 #}
var target = $(self).data('cook-selector-data-target');
var $target = $(target);
{# // 選択したlocationのIDを値として入れる #}
$target.val(cook.id);
});
});
});
</script>