ããã«ã¡ã¯ã
Gitterãã£ããã§ç±ãè°è«ãããã2.0ã§filter
æ©èœãæ¬ èœããŠãã人ã
ã«ã€ããŠã®çŽ æŽãããæçš¿ããã©ãŒã©ã ã«ãããå®éã«ã¯äžéšã®äººã«ãšã£ãŠã¯ã¢ããã°ã¬ãŒãã§ããŸããã ããã¯ãã³ãã¥ããã£ã«ãšã£ãŠååããªæ¹åã§ã¯ãªãããã§ãã
ã§ãããã2.0ã§ãã£ã«ã¿ãŒã埩掻ããããšãããã®ææ¡ãããããšæããŸãããªããªãããã£ã«ã¿ãŒã¯ãšãŠãæãããŠãããç§ãåæããŸãããè³¢ãããã§ãã ãã£ã«ã¿ã®åŒæ°ã®äžéšã次ã«ç€ºããŸãïŒããŸããŸãªè°è«ããåéããããã®ã§ãããæ£ç¢ºæ§ãä¿èšŒãããã®ã§ã¯ãããŸããïŒã
thing in things | filterBy 'foo' | orderBy 'bar' | limitBy 5
èªã¿ãããã§ãã èšãæãããšãé£éãã£ã«ã¿ãŒã¯ãå®éã«äœãæåŸ ãããã¹ãããç解ããã®ã«åœ¹ç«ã¡ãŸãã
èšããŸã§ããªãããšã³ãžãã¢ãªã³ã°ã®èŠ³ç¹ãããã£ã«ã¿ãŒãåé€ããããšã«ã¯ãããã匷ãè°è«ãããããªããã®ã¹ã¬ãããè³åŠäž¡è«ã§ããããã£ã«ã¿ãŒã®è¿éã«è³æãŸãã¯å察ã®æ祚ãããã®ããææ¡ããçç±ããããŸãã
ã¹ã³ãã
Gitterãã£ããããæåã«åŸããããã€ã³ããæ確ã«ããïŒ debounce
ã¯ãã£ã«ã¿ãŒã§ã¯ãªãã人ã
ã倱ãããšã«è奮ããŠããªãã£ã2.0ã®å€æŽã®1ã€ã«ãããŸããã§ããã
@JosephSilberã®å¥œæã«ããdebounce
ã¯ããã£ã«ã¿ãŒã§ããã v-model
ãã©ã¡ãŒã¿ãŒã§ããããŸãã
@ agc93ã«æè¬ããŸãã ãã®ç¹ãåé€ããŸããã
ã¹ã³ãã
ææªã®å Žåãããã«å¯ŸåŠããããã®å°ããªãã©ã°ã€ã³ãèãåºããŸãã ãã£ã«ã¿ã«ã€ããŠã¯ã httpsïŒ//www.npmjs.com/package/babel-plugin-pipe-operatorããã
åé¡ã¯ãããã¯babelã³ã³ãã€ã«ãªãã§ã¯æ©èœããªãããšã§ã
ããã€ãã®å€æŽã«ã€ããŠããç§ã¯ããŸãè奮ããŠããŸããã ãã£ã«ã¿ã®å Žåãã°ããŒãã«ããã¯ã¹ã€ã³ãç»é²ããããšã§ç°¡åãªä»£æ¿æ段ãããããã§ãã ãã ããè€æ°åãªã©ã®éåžžã«åçŽãªã¿ã¹ã¯ã®ããã«ãã³ã³ããŒãã³ãã®ãã¹ãŠã®ã¡ãœããã¹ã³ãŒããæ±æãããšããèãã¯ããŸã奜ãã§ã¯ãããŸããã ãã ããåæ¹åãã£ã«ã¿ãŒã䜿çšããããšã¯ãããŸããã
ãã£ã«ã¿ãŒã¯ãšãŠã䟿å©ã§çŸãããã®ã§ããã vueãåžžã«æ£ããè¡ã£ã2ã€ã®ããšïŒãããŸã§ã®ãšããïŒã
vue 2.0ã®æçš¿ãèªãã ãšãããã¹ãŠã®æ°ããå¯èœæ§ïŒç¹ã«ãä»®æ³domãšãµãŒããŒã¬ã³ããªã³ã°ïŒã«é©ããŸãããããã£ã«ã¿ãŒããªããªã£ãããšã«ãé©ããå°ãæ²ãããªããŸããã
ãããã¯ãç°¡åã«äœ¿çšã§ããŠãã§ãŒã³å¯èœã§ããã ãã§ãªããäž»ã«ç°¡åã«æ¡åŒµã§ãããã³ãã¬ãŒãã§çŽæ¥äœ¿çšã§ããçŸããæ§æãåããŠãããããvueã®ç§ã®ãæ°ã«å
¥ãã®éšåã®1ã€ã§ããã ç¹ã«v-for
ã«ãŒããšçµã¿åããããšãå®å
šã«äžèŽããŸããã
èšç®ãããããããã£ã䜿çšããŠãå¿ èŠãªãã¹ãŠã®å°éå ·ã®ãã£ã«ã¿ãªã³ã°ã眮ãæããå¿ èŠããããšèããŠãå°æ¥çã«å€ãã®å®åæãäœæããã®ã§ã¯ãªãããšå¿é ããŠããŸãã ããã¯ã¹ã€ã³ã¯åé¡ã®äžéšã軜æžãããããããŸããããããã§ãç§ã¯ãšã¬ã¬ã³ã¹ã®äžéšã§ãããvueã®äœ¿ããããã倱ãããŠããããã«æããŸãã
åæããæ¹ã¯ã説æã®äžã«ãã芪æãã¯ãªãã¯ããŠãã ããã +1
ã§17000人ãã¹ãã ããããã¯ãŸãã§ãã ããã«è¯ãããšã«ãããã€ãã®æå³ã®ãããŠãŒã¹ã±ãŒã¹ãèãåºããŸãã
ç§ã¯åæ¹åãã£ã«ã¿ãŒã䜿çšããããšããããŸãããããã£ã«ã¿ãŒãæ¬åœã«æããã§ãïŒ èšç®ãããããããã£ã䜿çšã§ããŸãïŒå Žåã«ãã£ãŠã¯äœ¿çšããŸãïŒããåçŽãªã±ãŒã¹ã§ã¯ãã¯ãŒã¯ãããŒãå®éã«é«éåããã®ã«äŸ¿å©ã§ãã
ãã®éåžžã«åçŽãªäŸãèããŠã¿ãŸããã
<input type="text" v-model="filter">
<ul>
<li v-for="item in items | filterBy filter">{{ item }}</li>
</ul>
äžèšã¯ãããè€éãªãã£ã«ã¿ãªã³ã°ãè¡ãå¿ èŠããªãå Žåã«ãéåžžã«ç°¡åã«èšè¿°ã§ããŸãã
次ã«ãããã次ã®ãã®ãšæ¯èŒããŸã
<input type="text" v-model="filter">
<ul>
<li v-for="item in filteredItems">{{ item }}</li>
</ul>
new Vue({
el: 'body',
data: {
items: [],
filter: ''
},
computed: {
filteredItems() {
var self = this
return this.items.filter(function(item) {
return item.indexOf(self.filter) > -1
})
}
}
})
2ã€ç®ã¯æžãã«ãããšèšã£ãŠããããã§ã¯ãããŸããããå€ãã®å Žæã§äœ¿çšãããšãç¹°ãè¿ãå§ããããšã«ãªããä»ã®ãã䟿å©ãªæ©èœã§äœ¿çšã§ããããã«ãªããŸã§ãå°ãæéãããããŸãã
ãããã«ãããç§ã¯å¹žããªVueãŠãŒã¶ãŒã§ããç¶ããå»æ¢ããããã£ã«ã¿ãŒã«ã€ããŠã®ç§ã®æèŠãå ±æããŸãïŒ
ãã£ã«ã¿ã¯åå©çšå¯èœã§ãã ããŒã¿ãäžåºŠãã©ãŒãããããŠãã£ã«ã¿ãŒãšããŠç»é²ãããã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãã䜿çšããé¢æ°ãäœæã§ããŸãã 2.0ã§ã©ãããã°ããã§ããïŒ
2.0ã§ã©ãããã°ããã§ããïŒ
- æ··å ¥ããŸã
- ã¡ãœããã§ã¢ãžã¥ãŒã«ãåé¢ãã
- èšç®ãããããããé¢æ°ãåããåå¥ã®ã¢ãžã¥ãŒã«
ã¢ããŠã³ã¹ã¹ã¬ããã«ã³ã¡ã³ããæ®ããã®ã§ãããã§ãã¹ãŠãè€è£œããã®ã§ã¯ãªããåã«ãªã³ã¯ããŸãã
http://archive.forum.vuejs.org/topic/3891/announcing-vue-js-2-0-public-preview/8
ãšãŠã䟿å©ãªãã®ãããªããã奪ãããŠãããšããæèŠãå®å šã«ç解ããŠããŸãã ãã ããæåã«ãäžèšã®ãã©ãŒã©ã ã¹ã¬ããã§@chrisvfritzã®ã³ã¡ã³ããèªãã§ãã ããã è°è«ã容æã«ããããã«ãããã«ã³ããŒããŠè²Œãä»ããŠããŸãã
@theotherzach Vueã«æ ç±ã泚ãã§ãããŠããããšãïŒ éæšå¥šã«ã€ããŠããå°ã詳ãã説æããããšæããŸãããæåã«èªå·±çŽ¹ä»ãããŸãã ç§ã¯Vueã³ã¢ããŒã ã®ã¡ã³ããŒã§ãããããªãŒã©ã³ã¹ã®UIãšããŒã¿ã®èŠèŠåäœæ¥ã«åžžã«Vueã䜿çšããŠããŸãããŸããä»ã®Webãã¯ãããžãŒã®äžã§ãç¹ã«VueãšRailsã®äœ¿çšæ³ã人ã ã«æããæè²è ã§ããããŸãã ç§ã¯ã³ãŒãã¹ã¯ãŒã«ãéå¶ããŠããã®ã§ã人ã ããããã®ããŒã«ã®äœ¿ãæ¹ãåŠã¶ïŒãããŠäžç·ã«äœ¿ãïŒã®ãã»ãŒ_æ¯æ¥_æ¯æŽããŠããŸãã
ç§ã¯ãŸããVue2.0ã§ãã£ã«ã¿ãŒãåé€ããããšã®å€§ããªæ¯æè ã®1人ã§ããã
Vueã®åå¿è åãã®ãã£ã«ã¿ãŒã®åé¡
ç§ããã£ã«ã¿ãŒã®å»æ¢ã«è³æããçç±ã®å€§éšåã¯ãå®éã«ã¯åå¿è åãã§ããã åŠçãšäžç·ã«ä»äºããããšããããã¯äœåºŠãåºãŠããäŒè©±ã§ãïŒ
åå¿è ãã€ãŸãããã倧ããªããšã®1ã€ã¯ã_äŸå€_ã§ãã ãã£ã«ã¿ã¯åãªãé¢æ°ã§ãããç¹å¥ãªæ§æãå¿ èŠã§ãããã©ãã§ã䜿çšã§ããããã§ã¯ãããŸããã ãŸãã ES7ã«çµ±åãããå¯èœæ§ã®ãããã€ãæ§æãšã¯ç°ãªããã€ãæ§æã䜿çšããŸããã€ãŸãã2ã€ã®éåžžã«é¡äŒŒããæŒç®åã䜿çšããŠéåžžã«é¡äŒŒããããšãå®è¡ãããŸã§ãé·ãã¯ããããŸãããããŸã£ããåãã§ã¯ãããŸããã ãããŠããã®ãã¡ã®1ã€ã ããå®éã«ã¯JavaScriptã§ãã
Utilã©ã€ãã©ãªã¯äŸ¿å©ã§ãããVueã¯1ã€ã§ã¯ãããŸãã
filterBy
ãæååãšæ°å€ã®å€æãããã³ãã®ä»ã®ç¹å®ã®ãã£ã«ã¿ãŒã®å Žåãããã§ããããããåºçŸããã¢ããªã±ãŒã·ã§ã³ã§åœ¹ç«ã¡ãŸãã äžè¬çã«Utilã©ã€ãã©ãªã¯äŸ¿å©ã§ãã ãŸããéžæã§ããåªããutilã©ã€ãã©ãªã¯æ°åãããŸãããVueã¯ãŠãŒãã£ãªãã£ã©ã€ãã©ãªã§ã¯ãããŸããã ãããŠççŽã«èšã£ãŠãç§ãã¡ãæäŸãããŠãŒãã£ãªãã£ã¯ã©ããã¯ã©ã¹æé«ã®ãã®ã§ã¯ãããŸããã§ããã
é貚ãæ¥ä»ãããã«ã¯ãã£ã«ã¿ãªã³ã°é åã®åŠç-ãããã¯ç§ãã¡ã®çŠç¹ã§ã¯ââãããŸããã å€ãã®ã¢ããªã¯ããããå¿ èŠãšãããç§ãåãçµãã ã»ãšãã©ã®ã¢ããªã¯ãããã®åé¡ã«çŽé¢ããVueãçŸåšæäŸããŠãããããå ç¢ãªãœãªã¥ãŒã·ã§ã³ãå¿ èŠãšããŸãïŒãŸãã¯å€§å¹ ãªè¥å€§åãšè»èŒªã®åçºæãå°å ¥ããã«æäŸã§ããŸãïŒã
ç§ã®ã¢ããªã§ã¯ãAccounting.jsã¯é貚ãããŸãåŠçããMoment.jsã¯ïŒããªããèšã£ãããã«ïŒæ¥ä»ãšæå»ãåŠçãã pluralize
ã¯å€ãã®è€æ°åœ¢ãããŸãåŠçããªããããã«ã¹ã¿ã èšç®å€ãããæãŸããããšããããããŸãã json
ã¯JSON.stringify
ããå°ã倧ããã§ãã
èšç®ãããããããã£ã®å©ç¹
ãã£ã«ã¿ã®ä»£ããã«èšç®ãããããããã£ã䜿çšãããšãåŠçãããå€ãã³ã³ããŒãã³ãã®ã©ãã§ãDRYã®æ¹æ³ã§ç°¡åã«åå©çšã§ãããšããå©ç¹ããããŸãã ç§ã¯èªåã®ã¢ããªã§ãããåžžã«ããªããã°ãªããªãããšã«æ°ã¥ããŸãã èšç®ãããããããã£ã¯ãå®è£
ã®è©³çŽ°ããã³ãã¬ãŒããã移åããã³ã³ããŒãã³ãã®æ©èœã®æ確ãªèª¬æã®ã¿ãæ®ããŸãã ãŸããã°ããŒãã«ã«å®çŸ©ããããã£ã«ã¿ãŒã«å¯Ÿããå©ç¹ã¯ããã®ã³ã³ãã¥ãŒã¿ãŒå€ã®é¢æ°ã確èªããã ãã§ããã®æ©èœãæ£ç¢ºã«ç¢ºèªããã³èª¿æŽã§ããããšã§ãã é
åã§ã¯ãJavaScriptã®map
$ã¡ãœãããšfilter
ã¡ãœããããã§ãŒã³ãããšããã€ããšåãç·åœ¢ã®åŠçãªã¹ããæäŸãããŸãããããã«å®£èšçã§ç°¡åã«æäœã§ããŸãã
ã°ããŒãã«ã«å®çŸ©ããããã®ã®æçšæ§
ãã¹ãŠã®ã³ã³ããŒãã³ãã§ã¢ã¯ã»ã¹ã§ããé¢æ°ãªã©ãå®çŸ©ããå¿
èŠãããå Žåã¯ã Vue.prototype.whateverIWant = mySuperCoolFunction
ãæé©ãªæ¹æ³ã§ãã å人çã«ãç§ã¯ãããããããããŸããã§ããã ç§ã¯ãã€ããã«ããŒã¡ãœãããã¢ãžã¥ãŒã«ã«å
¥ããŠãå¿
èŠãªå Žæã«ãã®ã¢ãžã¥ãŒã«ãã€ã³ããŒãããããšã奜ã¿ãŸããã ãã ããã°ããŒãã«ã®ç»é²ïŒããããçš®é¡ã®ïŒãé£ãããªãããšã¯ãªãããšã«æ³šæããããšã¯äŸç¶ãšããŠéèŠã§ãã
debounce
ãã£ã¬ã¯ãã£ãã®å Žå
ç§ã¯èšããªããã°ãªããŸãããç§ã¯å®éã«ããã§ããªããšäžç·ã§ãïŒ ç§ã¯æè¿ããã¹ãŠã®Vueãããžã§ã¯ãã調ã¹ãŸããããã©ããã«input
ããããã¹ãŠã®ãããžã§ã¯ãã§ãdebounce
ã䜿çšããŠããŸããã å®éãç§ã®éå»ã®ã¢ããªã±ãŒã·ã§ã³ã®1ã€ã ãããããŠã³ã¹ã䜿çšããŠããŸããã§ããã æè¡çã«ã¯ãŠãŒãã£ãªãã£ïŒlodashãä»ã®å€ãã®å
ç¢ãªãããžã§ã¯ãããããŠã³ã¹ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãïŒã§ããããã®åé¡ã¯ãããããçš®é¡ã®ã¢ããªã®UIéçºã«ããªãæ®éçã§ãã ç¬èªã®ãããŠã³ã¹é¢æ°ãäœæããããšãç°¡åã§ã¯ãªãã®ã§ãã»ãŒãã¹ãŠã®ãããžã§ã¯ãã«lodashã®å®è£
ã䜿çšããããšæããŸãã
ããã«ã€ããŠã¯å
éšçãªè°è«ãæ®ã£ãŠããã®ã§ããããã©ãã«è¡ãã®ããèŠãŠãããŸãã ããããã¯ããå人çã«ã¯ããã§ãããä»ã®äººãããã§ããããããŠã³ã¹ãåé€ãããšã v-model
ãæäŸãã䟿å©ãã®ã»ãšãã©ãåé€ãããŸãã
ç¹°ãè¿ãã«ãªããŸãããããªãã®æ ç±ã«æè¬ããŸãïŒ
çå£ã«ãç§ãã¡ã¯ããªããVueãã©ãã»ã©æããŠããããæããããªããããªãã®æžå¿µãè¡šæããŠãããŠæ¬åœã«ããããã§ã-ãããŠç¹ã«ãã®ãããªèŠªåã§æ¬æãè¡šããæ¹æ³ã§ïŒ èããŠããŸãã ã³ã¢ããŒã ã¯ããã¹ãŠã®èšèšè ãããã³ããšã³ãéçºè ãããã³ããŒã¿èŠèŠåã¹ãã·ã£ãªã¹ãã§ãã ç§ãã¡ã¯çãããªãå€æ§ãªèªåã®ä»äºã«Vueã䜿çšããŠããã®ã§ãèªåãã¡ã§é£ã¹ããããã°ããŒããæŒãåºãããšã«å°å¿µããŠããŸãã :-)
ããŒã¯ã¯å®ãã§ãããã£ã«ã¿ãŒãªãã§ãããã©ãããfilterByãã©ã®ããã«é©çšããŠéã«ããããã³ãŒãã§èŠãŠã¿ãŸãããïŒ
ã³ãŒããåå©çšããããã«ãã°ããŒãã«ãªçŽç²ãªãã£ã«ã¿ãŒé¢æ°ãå¥ã®ãã¡ã€ã«ã«æžã蟌ã¿ãŸã
//
// filters.js
//
function filterBy(list, value) {
return list.filter(function(item) {
return item.indexOf(value) > -1;
});
}
function findBy(list, value) {
return list.filter(function(item) {
return item == value
});
}
function reverse(value) {
return value.split('').reverse().join('');
}
export {filterBy, reverse, findBy}
App.vueãã³ãã¬ãŒãã§ãã£ã«ã¿ãŒã䜿çšãã
<template>
<div id="app">
<h1> Reverse Demo </h1>
<p> {{ reverse(msg) }}</p>
<hr />
<h1> Filter Demo </h1>
<input v-model="userInput" />
<h2> Prefix Matched Words: </h2>
<ul v-for="word in filterBy(words, userInput)">
<li>{{word}}</li>
</ul>
<h2> Exact Matched Words: </h2>
<ul v-for="word in findBy(words, userInput)">
<li>{{word}}</li>
</ul>
</div>
</template>
<script>
import {reverse, filterBy, findBy} from './filters.js'
export default {
data() {
return {
userInput: '',
msg: 'Hello Vue!',
words: ['Black', 'Block', 'Blue', 'Alpha'],
}
},
methods : {
reverse,
filterBy,
findBy,
},
}
</script>
ããã§çµæãåç §ããŠãã ããhttp://raywill.github.io/vuefilter/
ãã£ã«ã¿ã䜿çšããå Žåã次ã®vueã³ãŒãã¯åãããšãè¡ããŸãã
<template>
<div id="app">
<h1> Reverse Demo </h1>
<p> {{ msg | reverse }}</p>
<hr />
<h1> Filter Demo </h1>
<input v-model="userInput" />
<h2> Prefix Matched Words: </h2>
<ul v-for="word in words | filterBy userInput">
<li>{{word}}</li>
</ul>
<h2> Exact Matched Words: </h2>
<ul v-for="word in words | findBy userInput">
<li>{{word}}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
userInput: '',
msg: 'Hello Vue!',
words: ['Black', 'Block', 'Blue', 'Alpha'],
}
},
}
ã©ãããããã£ã«ã¿ãŒããµããŒããããŠããã°ãç°¡åãªã³ãŒããæžãããšã¯ã§ããŸããã§ããã
å人çã«ã¯ãã³ãŒãã£ã³ã°ããã楜ããããvue1.0ã®æ¹æ³ã奜ãã§ãã
ãã€ã©ãŒãã¬ãŒãã®æžå¿µã«ã€ããŠã¯ãããã«å¯ŸåŠããæ¹æ³ãããã€ããããŸãã
äžã§ç€ºãã@raywillã®ããã«ã ããå°ãåé·ã§ãããå©ç¹ã¯æ¬¡ã®ãšããã§ãã
Vue.prototype
ã«æ·»ä»ããŸãVue.prototype.filters = {
filterBy: ...,
orderBy: ...
}
<ul v-for="word in filters.filterBy(words, userInput)">
<li>{{word}}</li>
</ul>
computed: {
filteredThings () {
return this.things
.filter(contains(this.foo))
.sort(by(thing => thing.bar))
.slice(0, 10)
}
}
ãã«ããŒé¢æ°ã¯æ¬¡ã®ããã«ãªããŸãã
// a function that returns a predicate function for array.filter()
function contains (value) {
return thing => thing.indexOf(value) > -1
}
function by (getValue) {
return (a, b) => {
return getValue(a) > getValue(b) ? 1 : -1
}
}
ç¹°ãè¿ãã«ãªããŸãããéåžžã«éèŠãªèšèšäžã®èæ ®äºé ã¯ãçµã¿èŸŒã¿ã®ãã£ã«ã¿ãŒã圹ç«ã€å¯èœæ§ãããããšã§ãããçŽç²ãªJavaScriptã®æè»æ§ã«æ¬ ããŠããŸãã çµã¿èŸŒã¿é¢æ°ãããŒãºã«åããªãå Žåã¯ã䌌ããããªãã®ãåå®è£ ãããïŒãããŠãçµã¿èŸŒã¿ã圹ã«ç«ããªããªããããã³ãŒãã«ãªãæçµçãªã³ãŒãã§äž¡æ¹ãåºè·ããïŒãVueãããããæŽæ°ããæ°ããããŒãžã§ã³ããªãªãŒã¹ããŸãã
@ yyx990803ãããã¿ã€ãã®ã¢ãããŒãã奜ãã§ãããè€æ°ã®ãã£ã«ã¿ãŒãå¿ èŠãªå Žåã¯ã©ãã§ããããã
filterBy
$ã«æ²¿ã£ãŠ$ orderBy
ã䜿çšããããšã¯ããªãäžè¬çã§ã
<ul v-for="word in filters.orderBy(filters.filterBy(words, userInput), column, -1)">
<li>{{word}}</li>
</ul>
limitBy
ãè¿œå ããå Žåã¯ã©ãã§ããããã
<ul v-for="word in filters.limitBy(filters.orderBy(filters.filterBy(words, userInput), column, -1), limit)">
<li>{{word}}</li>
</ul>
ã¯ããå°ãªããšãç§ã®æèŠã§ã¯ã
filterAndOrderBy
ã®ãããªãã£ã«ã¿ãŒãçµã¿åãããããšãã§ãããšæããŸããããããæ£ãããããŸããã
ç§ã¯å€æŽãåãå ¥ããŠããŸãããããåŠçããã®ãšã»ãŒåããããç°¡åãªæ¹æ³ãèãåºãããã ãã§ãã
ãŸããã©ãã§ããã£ã«ã¿ãŒã䜿çšã§ãããšããå©ç¹ãéåžžã«è¯ãç¹ã§ãã
ã¡ãªã¿ã«ã@ vuejs / collaboratorsã¯ãçŸåšã®çµ±åãã£ã«ã¿ãŒã®ãŠãŒãã£ãªãã£ããã±ãŒãžãæäŸãããªãã·ã§ã³ã«ã€ããŠè©±ãåã£ãŠããŸãã ã³ãŒãããŒã¹çšã®ãŠãŒãã£ãªãã£ããŒã«ãæäŸãããªãœãŒã¹ã¯ãããããããŸãã
ã³ã¢ãã£ã«ã¿ãŒãåé€ããããšã®è¯ãç¹ã®1ã€ã¯ãèªåã§ãã£ã«ã¿ãŒãã«ã¹ã¿ãã€ãº/å®è£ ã§ããããšã§ãã ããã«ãããæè»æ§ãå€§å¹ ã«åäžããŸãã
@ rigor789ãã³ãã¬ãŒãåŒã¯å¯èœãªéãåçŽã«ããå¿
èŠããããŸãã çæ³çã«ã¯<div v-for="filteredData"> </div>
ã ããã¯ããã£ã«ã¿ãŒåŠçãããããŒã¿ãäœæããããã®ããžãã¯ãä¿æã§ããèšç®ãããå°éå
·ã«ããããšãã§ããŸãã ããã¯ã¯ããã«èªã¿ãããã次ã®ãããªãã®ãããåªããŠããŸãã
<div v-for="item in filters.orderBy(filters.filterBy(words, userInput), column, -1)"> </div>
ãŸã
div v-for="item in data | filterBy | orderBy "
ect
èšç®ãããããããã£ãšããŠå²ãåœãŠãæ¹ãã¯ããã«åå©çšå¯èœã§ãããåã³ã³ããŒãã³ãã«æž¡ãããšãã§ããŸãã ãã£ã«ã¿ãªã³ã°ãããããŒã¿ã2ãæã§äœ¿çšãããå Žåã¯ã©ããªããŸããïŒ åŒã«é£éãã£ã«ã¿ãŒã䜿çšããå Žåãšæ¯èŒããŠããã³ãã¬ãŒãã§åçŽãªåŒã䜿çšããæ¹ããç°¡åã§ãã·ã³ãã«ã§ãä¿¡é Œæ§ãé«ããèªã¿ããããªããŸãã
ãã©ããŒããŠãã人ã®ããã«ãç§ã¯ããã§@chrisvfritzã«çããŸããïŒ http ïŒ//forum.vuejs.org/topic/3891/announcing-vue-js-2-0-public-preview/17
以äžã¯ãã°ããŒãã«ã«å©çšå¯èœãªå°æ°ã®çŽç²ãªãã¥ãŒãã«ããŒé¢æ°ã®ãŠãŒã¹ã±ãŒã¹ã解決ããŸãã ãã£ã«ã¿ãŒã®åãå€ãã«é¢ããæžå¿µãæ€åããŸãã çããïŒ ð¥ã€ã³ã¿ãŒãããäžã®èª°ãã®å¿ïŒç§ã®ïŒãå€ããŠ@ yyx990803ã«ããã§ãšãïŒ
Vue.prototype.filters = {
filterBy: ...,
orderBy: ...
}
<ul v-for="word in filters.filterBy(words, userInput)">
<li>{{word}}</li>
</ul>
ç§ã¯@ yyx990803ã«å®å šã«åæãããã£ã«ã¿ãŒãåé€ããŠããã¬ãŒã³ãªJSé¢æ°ã«åºå·ããŸãã
@ blake-newmanããã¯éåžžã«è¯ãç¹ã§ããç§ã¯ãã®æç¹ã§ã»ãšãã©ç¢ºä¿¡ããŠããŸããèªã¿ããããèãããšããã®ãããªããšãéæã§ãããšæããŸãã
computed: {
filteredItems() {
return f(this.items).filterBy(this.filter /* string or function*/)
.orderBy(this.field, -1)
.limitBy(10)
.apply()
}
}
ã³ã¢ãã£ã«ã¿ãŒãåé€ããããšã®è¯ãç¹ã®1ã€ã¯ãèªåã§ãã£ã«ã¿ãŒãã«ã¹ã¿ãã€ãº/å®è£ ã§ããããšã§ãã ããã«ãããæè»æ§ãå€§å¹ ã«åäžããŸãã
ããªãã¯ãã€ã§ãèªåã§ããããã«ã¹ã¿ãã€ãº/å®è£ ããããšãã§ããŸããã
Vueã¯ãŠãŒãã£ãªãã£ã©ã€ãã©ãªã§ã¯ãããŸããã ãããŠççŽã«èšã£ãŠãç§ãã¡ãæäŸãããŠãŒãã£ãªãã£ã¯ã©ããã¯ã©ã¹æé«ã®ãã®ã§ã¯ãããŸããã§ããã
ç§ãã¡ãæžå¿µããŠããã®ã¯ããã³ãã¬ãŒãã®ãã£ã«ã¿ãŒæ©èœãåé€ããããšã§ãã çµã¿èŸŒã¿ã®ãã£ã«ã¿ãŒãåé€ããããšã¯éåžžã«çã«ããªã£ãŠããŸããã¢ã³ããŒã¹ã³ã¢ããã®ä»ã®utilã©ã€ãã©ãªã«ãããã·ããããšã§ç°¡åã«åäœæã§ããŸãã 次ã«ã誰ããçŸåšã®ãã¹ãŠã®çµã¿èŸŒã¿ãã£ã«ã¿ãŒãåäœæããåäžã®ãã©ã°ã€ã³ããªãªãŒã¹ããããšããã§ããŸãã
ãã£ã«ã¿ã®ä»£ããã«èšç®ãããããããã£ã䜿çšãããšãåŠçãããå€ãã³ã³ããŒãã³ãå ã®ã©ãã§ãDRYæ¹åŒã§ç°¡åã«åå©çšã§ãããšããå©ç¹ããããŸãã
ãã¡ãããä»ã®å Žæã§åå©çšããå¿ èŠãããå Žåã¯ãèšç®ãããããããã£ã䜿çšã§ããŸãã ãã ããããã§ãªãå Žåã§ãããã£ã«ã¿ãŒã®æ¹ãã¯ããã«äŸ¿å©ã§ãã
ç§ãäžã§å ±æãããã®ãªã³ã¯ã«ç§ãæçš¿ããä»ã®ããã€ãã®ãã€ã³ãããããŸãã
ES7ã§ææ¡ãããæ§æã®ããã«åäœãããã£ã«ã¿ãŒã®æ§æããµããŒãããŠã¿ãŸãããïŒ ããã¯äººã ã圌ãã®ææã®ãã£ã«ã¿ãŒã䜿ãç¶ããããšãå¯èœã«ãããããŠãããæªæ¥ãä¿æãããããããªããã®ãšäžèŽãããã§ãããã æçµçã«ãES7ãã€ããããå ŽåãAPIãå€æŽããã«å éšå®è£ ãåãæ¿ããããšãã§ããŸãã
ES7ãã€ãã¯æ¿èªãããŠããŸããããããšãå€ãã®å€æŽãå ããããŠããŸããïŒ
çè«çã«ã¯å€æŽãããå¯èœæ§ããããŸãããå®å®ããŠããããã§ãã
ã¹ããŒã¿ã¹ïŒmindeavor / es-pipeline-operatorïŒ33
@JosephSilber @ young-steveo @thelinuxlichãã€ãå
šè¬ã®äŸ¡å€ã«ã€ããŠã¯ãåãããŒãžã«ãããšæããŸãã ð2.0ã®æ°ããã³ã³ãã€ã©ã®å©ç¹ã®1ã€ã¯ãçæãããã¬ã³ããªã³ã°é¢æ°ã³ãŒããBabelçµç±ã§ãã€ãã§ããããšã§ãã ããã«ã€ããŠã¯ããã«èª¿æ»ããå¿
èŠããããŸããã |>
ãå¢ããå¢ãããã®ããã®Babelãã©ã°ã€ã³ãéçºããããšãã¢ããªå
ã®ã©ãã§ããã€ãã䜿çšããŠã¡ãœããã幞ãã«ãã§ãŒã³ã§ããããã«ãªãããšã¯æ³åã«é£ããããŸããã LiveScriptããã®ä»ã®é¢æ°åèšèªã®å€§ãã¡ã³ãšããŠãç§ã¯ééããªããã®äŸ¡å€ãèªèããŠããŸãã
ãã®ãã€ãã©ã€ã³æŒç®åã¯ã¹ããŒãž0ã§ããããŸãã
@thelinuxlichã¯ãã圌ãã¯ãŸã TC39ã®ãã£ã³ããªã³ãåŸ ã£ãŠãããšæããŸãã ð
@ rigor789ããã¯ç§ãèšåãããã£ãéžæè¢ã®1ã€ã§ãïŒ JavaScriptã®ãã¯ãŒã«ãããéžæããè¡šçŸåãå®çŸã§ããŸãããã³ãã¬ãŒãå ã«ãã£ã«ã¿ãªã³ã°ããžãã¯ãé 眮ããããããJavaScriptã®æ¹ãåªããŠããŸãã
@ yyx990803 1人ã®ãŠãŒã¶ãŒã®ååãæŽæ°ãããå Žåã次ã®å Žåã«Vueã¯ã©ã®ããã«æ©èœããŸããïŒ
<div v-for="user in users">
<p>{{ user.name |> capitalize }}</p>
</div>
Vue.extend({
computed: {
displayableUsers() {
for (user of this.users)
user.name = capitalize(user.name);
},
},
});
åè ã¯1ã€ã®ãªããžã§ã¯ãã®ã¿ãåã¬ã³ããªã³ã°ããåŸè ã¯ãªã¹ãå šäœãåèšç®ããããã«èŠããŸããïŒ
@rpkilbyã¯åçã§ã¯ãªãããã§ãã ããã¯ãã£ãšäŒŒãŠããã§ãããïŒ
Vue.extend({
methods: {
capitalize () { ... }
}
})
<div v-for="user in users">
<p>{{ capitalize(user.name) }}</p>
</div>
ããã§ããã¡ãœããããã£ã«ã¿ãŒãšããŠäœ¿çšãããšããã¢ã€ãã¢ã¯å¥œãã§ã¯ãããŸããïŒçŽæçã«ã¯ééã£ãŠããããã«èŠããŸãããå®éã«ã¯èª¬æã§ããŸããïŒã ãããã«ããããã£ã«ã¿ãŒãå©çšå¯èœã«ããä»ã®æ¹æ³ã«ã€ããŠè©±ãåã£ãã®ã§ã+ 1ããŸãã
ãã®ã¹ã¬ããã§ææ¡ãããŠãããã®ã¯ããã£ã«ã¿ãŒã®è¡šçŸåãšç°¡æœãã«ããè¿ã¥ããŠããŸããã ããã§ã¯ãããŸããã
ãããŠããã¯ç§ãæ¬åœã«æ²ãããããŸãã ãã©ãŒã©ã ã®ã¹ã¬ããã§èšã£ãããã«ãç§ã«ãšã£ãŠãããã¯VueVueãäœããã®ã®å€§ããªå¡ãåãé€ããŸãã
ããªããç§ãæ¢ããŠãããªããããªãã¯ç§ãèãããããã«ãããæ³£ããŠããé ã«ããã®ãèŠã€ããããšãã§ããŸãð
ãŸããããã®å€æŽã¯åªããJavascriptã³ãŒãã£ã³ã°ãä¿é²ããŸããããã«å¯ŸåŠããŠãã ãã:)
ããã§ãç§ã¯@ yyx990803ãšé·ãè°è«ãã
<li v-for="item in items | filterBy 'name' | orderBy 'title' 1">{{ item.name }}</li>
...
<script>
...
methods: {
filterBy (items, field) { return filtered; },
orderBy (items, field, order) { return filtered; }
}
...
</script>
ããã¯äž¡æ¹ã®é·æã«è¿ã¥ãã ãããšããå°è±¡ãåããŸããã
ãšã¯ãããæçµçã«ã¯ããã£ã«ã¿ãŒå šäœãåé€ããæ¹ãå®éã«ã¯åªããŠãããšç¢ºä¿¡ããŠããŸãã @ thelinuxlichãä»èšã£ãããã«ãJavaScriptãšããžãã¯ã®èãæ¹ãåäžããŸãã Laravelã®Bladeããã®ä»ã®ãã¬ãŒã ã¯ãŒã¯ã®ãã¥ãŒã¬ã€ã€ãŒã«ã¯ããžãã¯ãå°å ¥ããŠããŸããããŸããVueã®ãã³ãã¬ãŒãã«ãããžãã¯ãå°å ¥ããªãã§ãã ããã
ããã¯èšã£ãŠãã @ JosephSilberãèŠããšãããã«ç§ãããŸãã
ç§ã«ãšã£ãŠããã£ã«ã¿ãŒã¯éåžžã«çŸãããšæããŸããæ§æã¯ããã£ã«ã¿ãŒæ§æãã©ã®ããã«èŠããããæ£ç¢ºã«ç€ºããŠããŸãã
ãŸããç§ã«ãšã£ãŠVueã®é åã®1ã€ã¯ãïŒããã€ãã®ïŒããããªãŒãå«ãŸããŠããããšã§ãã ãããã®ããããã倱ãããšã¯æ¬åœã«æ²ããããšã§ã-ç§ã®æèŠã§ã¯ãäž¡æ¹ãšãVueãéç«ãããŸãã
ã¹ã¬ãããèªããšããã£ã«ã¿ãŒã«é¢ããæžå¿µã®ã»ãšãã©ã¯ãVueã«ããã©ã«ãã®ãã£ã«ã¿ãŒããããå®éã«ã¯é¢æ°èªäœã§ã¯ãªããšããäºå®ã§ããããã«æãããŸãïŒãŸãã¯ãããã§ã¯ãããŸãããïŒãŸã ããããŸããïŒã
@ blake-newmanã®ãã£ã«ã¿ãŒãã©ã°ã€ã³ã®èãæ¹ã奜ãã§ãäºåã«äœæãããäŸãããã¯ãã§ãã ä»ã®äººãä»ã®ãã£ã«ã¿ãŒãæãã€ããå Žåããããã¯ãã©ã°ã¢ã³ããã¬ã€ã§ããå¿ èŠããããŸãã ããã¯çŽ æŽãããããšã§ãã ç§ã¯ããã£ã«ã¿ãŒã®äœæããŠãŒã¶ãŒã©ã³ãã®è²¬ä»»ã§ããããšã«å®å šã«åæããŸãã
ãŸã å¿ èŠãªã®ã¯ããã€ããšãã§ãŒã³ã®æ©èœãããã³å ã®ãã£ã«ã¿ãŒæ©èœã®ã°ããŒãã«æ§ã§ãã ã°ããŒãã«æ§ã«é¢ããæžå¿µã¯@ yyx990803ã§ã«ããŒãããŸããã ãã€ããšã®é£éã¯ã©ãã§ããïŒ ããã¯ããã³ãã¬ãŒããèªã¿ãåºåãšããŠäœãæåŸ ãããããç解ããã®ã«åœ¹ç«ã¡ãŸãã ãã€ããšãã§ãŒã³ã«ã€ããŠã¯äžèšã§èª¬æããŸããã ããã§ãã§ããŸããïŒ ãªãããã¯ãŸã£ããæªãããšãªã®ã§ããïŒ ãã¶ã€ããŒã«ãšã£ãŠã¯ãŽãŒã«ãã§ãïŒ ãã£ã«ã¿ã¯èšèšè ã®ããŒã«ã§ãããJSããã°ã©ããŒã®ããŒã«ã§ã¯ãããŸããã ã§ããããç§ã®æ¬ã§ã¯ãããè¯ãJSãæžããšããè°è«ã¯ããŒãããå€ããŠããŸããããªããããæãŸããã®ãã¯ç解ã§ããŸãã ãããããã¶ã€ããŒãšããŠãç§ãããè¯ãã³ãŒããæžããããšæã£ãŠããŸãããã£ã«ã¿ãŒã䜿çšãããšãçŸããã§ããŸãã ïŒç¬é¡ïŒ
ã¹ã³ãã
é£éã«é¢ããããšã¯æ¬¡ã®ãšããã§ãããã£ã«ã¿ãŒã¯äž»ã«2ã€ã®ç®çã§äœ¿çšãããŸãã
ããã¹ãããã©ãŒãããããå Žåã90ïŒ ä»¥äžã®å Žåãåäžã®ãŠãŒãã£ãªãã£ã¡ãœããã®ã¿ã䜿çšãããŸãã ãã®å Žåãé£éã¯ããã»ã©åé¡ã«ã¯ãªããŸããã
é åã«ã€ããŠïŒé ååŠçã¯å®éã«ã¯ããžãã¯ã§ãããJavaScriptã«é©ããŠããããšããã§ã«ææããŸããã è€æ°ã®é£éé åãã£ã«ã¿ãŒã䜿çšãããšãåçŽãªå Žåã¯åé¡ãªãããã«èŠããŸãããããããã«è€æ°ã®åŒæ°ã䜿çšãããšèŠèŠãããªããŸãã ãŸããå®éã«ã¯ãã¹ãã§ãªããšãã«ããã³ãã¬ãŒãã«ããŸãã«ãå€ãã®ããžãã¯ãå ¥ããããšããå§ãããŸãã ãŸããæè»æ§ããããŸããïŒåŠçãããå€ãç°¡åã«ååŸããããšã¯ã§ããŸããïŒã æ¯èŒãããšãES2015ã§ã¯å ã®äŸ
<div v-for="thing in things | filterBy 'foo' | orderBy 'bar' | limitBy 5">
次ã®ããã«æžãããšãã§ããŸãïŒ
computed: {
filteredThings () {
return this.things
.filter(item => item.title.indexOf('foo') > -1)
.sort((a, b) => a.bar > b.bar ? 1 : -1)
.slice(0, 5)
}
}
ããã¯åãªãJavaScriptã§ãããéæ³ã代æ¿æ§æãããã³åŠç¿ãããã£ã«ã¿ãŒåºæã®APIã¯ãããŸããã ãŸããåŠçãããå€ïŒã€ã³ããªãžã§ã³ãã«ãã£ãã·ã¥ãããŸãïŒã«ã¢ã¯ã»ã¹ã§ããŸãã 以åã®ã³ã¡ã³ãã«ç€ºãããŠããããã«ãããã«ç ç³ãèªç±ã«è¿œå ããããšãã§ããŸãã ããã«ããã³ãã¬ãŒãã¯ãã£ãããšèŠããŸãã
<div v-for="filteredThings">
ããã¯äŸ¿å©ãªãã®ãåãé€ãããŠãããããªãã®ã ãšç§ã¯ç¥ã£ãŠããŸãããæ£çŽãªãšããããã£ã«ã¿ãŒã®åŒæ°ã¯ãæ§æã®ããã«æ§æãç¶æããããšããŠããããã«èãããŸãã ç§ã®æèŠã§ã¯ãæ©èœãæ£åœåããã«ã¯ããšã¬ã¬ã³ãã ããããšããã ãã§ãªãã客芳çãªäŸ¡å€ãæäŸããå¿
èŠããããŸãã ããã¯inline-templates
ã®å Žåã§ãããããã£ã«ã¿ãŒã«ã¯è¡šç€ºãããŸããã
@ yyx990803-ããªãã®äŸã¯åé¡ãäŸç€ºããŠãããšæããŸãã ç¹°ãè¿ãã«ãªããŸãããç§ã¯æé«ã®JSããã°ã©ããŒã§ã¯ãããŸãããã filteredThings
ãå®éã«äœãããŠããã®ããç¥ãããã«JSããã°ã©ããŒã§ããå¿
èŠã¯ãããŸããã ç§ã«ãšã£ãŠãããã¯æªãç¿æ
£ã§ãã ïŒsmileïŒãã£ã«ã¿ãªã³ã°ã¡ãœãããã°ããŒãã«ã§ãããšããäºå®ã¯ãã¡ãœãããäœãããããèŠã€ããããã«ãããã¥ã¡ã³ããã³ãŒããæ€çŽ¢ããããåºåã解èªããå¿
èŠãããããšãæå³ããŸãã ããŸããšã¬ã¬ã³ãã§ã¯ãããŸããã å³ïŒ
ãããè¯ããã `filterByOrderByAndLimit 'ã®ãããªã¡ãœããåãæã€ããšãã§ããŸãã è°è«ã¯ã©ãã§ããïŒ
<div v-for="filterByOrderByAndLimit(things,thing,'foo','bar',5)">
ããã¯æ£ããã§ããããïŒ
ãããããªããããã¯å®è¡å¯èœãããããŸããã ããã§ããèŠæ ãã¯è¯ããããŸããã
ãããŠãä»ã¯filterByãšOrderByã ããå¿ èŠã§ãã ãããè¡ãããã«å¥ã®æ¹æ³ãå¿ èŠã§ããïŒ æ¬¡ã«ãé貚ã®æžåŒãè¿œå ããŸãã å¥ã®æ¹æ³ïŒ ãã³ãã¬ãŒãã®ãã£ã«ã¿ãŒãã§ãŒã³ã«ããããã¬ãŒã³ããŒã·ã§ã³ã®æäœãæè»ã§è¡šçŸåè±ãã«ãªããŸãã ãã®æžå¿µã¯ãã¡ãœããã§ã¯ãŸã é©åã«å¯ŸåŠãããŠããŸããïŒãããŠãç¥èãäžè¶³ããŠãããããã¡ãœãããããããç解ããããšãã§ããŸããïŒã
ããã¯å¯èœã§ããïŒ
<div v-for="filterBy(things, thing, 'foo').OrderBy('bar').Limit(5)">
ãã³ãã¬ãŒãã§ããŸãã«ãå€ãã®ããžãã¯ãå®è¡ããããšã¯é¿ããã¹ããã®ã§ããããšã«åæããŸãã ãã ãããã£ã«ã¿ãŒãã§ãŒã³ãšãã¢ããªã®ã³ã³ããŒãã³ã/ãã³ãã¬ãŒãã®ä»»æã®å Žæã«ãã£ã«ã¿ãŒãç°¡åã«æ¿å ¥ã§ããæ©èœã¯çŽ æŽãããã³ã³ã»ããã§ãããæåãããã£ã«ã¿ãŒãè¿œå ããã®ã«ã¯çç±ããããŸãã ãã®çç±ã¯äœã§ãããïŒ ããªãããããã«ååãä»ããããšãã§ããã°ãç§ã¯åœŒããããããããã¯æªãç¿æ £ãå©é·ãããããã1ãã€ã«å€ãã®ãéãè³ããã§ãããã
Vueèªäœãšåãããã«ãæè»æ§ãå¯èœã«ãããã®ã¯ãã¹ãŠäžé©åã«äœ¿çšãããå¯èœæ§ããããŸãã inline-template
ã®äž»ãªè«æ ã¯ãæè»æ§ããããVueãããŸããŸãªæ¹æ³ã§äœ¿çšã§ããããã«ããããšã§ããã ãã£ã«ã¿ã¯ãVueã®å
éšã§ãããVueã®å€éšã§ã®äœ¿çšæ¹æ³ã«åœ±é¿ãäžããªãããšãé€ãã°ãããã»ã©éãã¯ãããŸããã ããã§ããããã¯ãã®éèŠæ§ãåãäžããŸããã å€ãã®äººããããã¯ã¢ããã°ã¬ãŒãããã®ã¯ãã¡ã ãšèšã£ãŠããããšãå¿ããªãã§ãã ããã ããã¯ãšãŠãéèŠã§ãïŒ ïŒç¬é¡ïŒ
æ°ããæ¹æ³ã«ã¯ãå€ãæ¹æ³ãšåãå±æ§ãå¿ èŠã§ãã
ïŒç§ã¯äœããå¿ããŸãããïŒïŒ
ããããã¹ãŠã§ãããªããç§ã¯èª°ããããªãæºè¶³ããã ãããšç¢ºä¿¡ããŠããŸãã ç§ã¯å人çã«ãããã¡ãœããã§èµ·ãã£ãŠããã®ãèŠãããšãã§ããŸããïŒãŸã ïŒã
ã¹ã³ãã
@smolinari
ãã®æ°ããã¢ã«ãã¡ãªãªãŒã¹ã1é±éè©ŠããŠãããïŒããªãã®ç·Žç¿ã«åºã¥ããŠïŒæ¬åœã«äŸ¡å€ã®ããã³ã¡ã³ããä»ããŠã¿ãŸãããïŒ ãã¶ããæ¢åã®ã¢ããªããªãã¡ã¯ã¿ãªã³ã°ããŠãäœãäžå¯èœã ã£ãããäœãæ¹åãããããäœãæªåããããç¥ãããŠãã ãããããããã°ããããã話ãåãããšãã§ããŸãã ããã¯ç§ãæããã¹ãŠã®äººã«ãšã£ãŠåœ¹ç«ã€ã§ãããã
@ yyx990803-1ã«åæããŸãããåæããŸãã ïŒsmileïŒç§ã¯ããããšãŠãå€ãã®æãåŸãäœããåãåºãããã®é©åãªçç±ã§ããããšã«åæããŸããã
ã§ã¯ãæéã®çµéãšãšãã«ãå®çšçãªJSã¯å®çšçãªHTMLãããåªããŠãããšå€æãããšæããŸããïŒ
ã¢ããã°ã¬ãŒãããªãããšã®ããŒãŽãŒã®è°è«ã¯ãä»ã®äººãèšã£ãããšã§ãã ç§ã¯ãã ãããäŒãã軜æžããããšããŠããŸãã
ç§ããã®æåŸã®è°è«ã ããããŠãŒã¶ãŒã®ç®ããèŠãŠãã ããã Laravelã®ãããªã·ã¹ãã ããŸãã¯Vueãçµã¿èŸŒãã ä»ã®MVCãŸãã¯MVVMã·ã¹ãã ããããšããŸããããã«ããããã®ã·ã¹ãã ã®ãŠãŒã¶ãŒã¯ç¬èªã®ã³ã³ããŒãã³ããæ§ç¯ããããšãã§ããŸãã ãã®ãã£ã«ã¿ãŒã¯ãããã°åŠç¿æ²ç·ãåçŽåãããã®ã·ã¹ãã ã®ãŠãŒã¶ãŒãJSã«è§Šããããšãªãå€ãã®ããšãå®è¡ã§ããããã«ããŸãã ç§ã¯Vueã®ãã¡ã³ã§ãããªããªããJS以å€ã®ããã°ã©ããŒããŸã å€ãã®ããšãæãéããããšãã§ããããã§ãã ããã¯ç§ãReactãšJSXã奜ãã§ã¯ãªãã®ãšåãçç±ã§ãã ãã®çµã¿åããã¯ãæéãçµã€ã«ã€ããŠãVueãããã¯ããã«å°ããªãŠãŒã¶ãŒããŒã¹ã«ãªããŸãã ç§ã¯ããã«ãéãè³ããŸãã
ãŸããæ¬åœã®æè»æ§ã¯JSã«ããããšãç解ããŠããŸãã ããã§ããVueã®æè»æ§ãJSã ãã«é Œããªãã§ãã ããã 誰ãããã©ãŒJSããã°ã©ããŒã§ãããšã¯éããªãããšãèŠããŠãããŠãã ããã å®éãã»ãšãã©ã®äººã¯ããã§ã¯ãããŸããã ãã£ã«ã¿ãŒã¯ãããã®äººã ã®ããã«å€ãã®ããšãæãéããããã®çŽ æŽãããæ¹æ³ã§ãããããã¯ãããªãJSæäœãžã®çŽ æŽããã足ãããã§ããã ãã£ã«ã¿ãŒã¯ãããæãéããããšãã§ããŸãããïŒ JSã¡ãœããã«ã€ããŠè©³ãã説æããŸãã
Okã ç§ããã¯ååã§ã.....ç§ã¯çµãããŸããã ãããŠããšã«ããèããŠãããŠããããšãã Vueã¯ãŸã çŽ æŽãããã§ãïŒ ïŒç¬é¡ïŒ
@ azamat-sharapov-è¯ãç¹ã
ã¹ã³ãã
JSå ã®æªãç¿æ £ãæ£åœåããããšããŠãã人ã ãèŠããšãç§ã¯æ²ãããªããŸãã æ¬åœã«ãããªãã¯ããã§ããå¿ èŠã¯ãããŸããããã åºæ¬çãªå®¿é¡ãããã ãã§ãïŒãŸãã¯ããã¯æè¿ããåºæ¬çã§ã¯ãããŸãããïŒïŒ
ç§ãfilters-inside-methodsã§æ±ããŠããåé¡ã¯ãã»ãã³ãã£ã¯ã¹ã§ãã
ãã£ãšããã£ã«ã¿ãŒã¯éçé¢æ°ã®ãããªãã®ã§ãããã¡ãœããã¯ééçé¢æ°ã§ãã
ãã£ã«ã¿ã¯ãã¡ãœãããšã¯éåžžã«ç°ãªãã»ãã³ãã£ã¯ã¹ãäŒéããŸãã æ倧ã®éãã¯ããã£ã«ã¿ãŒã¯this
䜿çšã§ããªãããšã§ãããã¡ãœããã¯äœ¿çšã§ããŸãã
Vue.prototype.filters
ã䜿çšããŠãããšãã®@ yyx990803ã¯æ©èœããŸããã Vue
å€æŽããããš
ã°ããŒãã«ã¯è¯ãç¿æ £ã§ã¯ãªãã®ã§ãããã¯è¯ãç¿æ £ã®ããã«ã¯èŠããŸããã æšå¥šãããã¢ãããŒãã¯ããã«ããŒã¡ãœãããæ瀺çã«ã€ã³ããŒãããããšã§ãã ãããã¿ã€ããžã®ã¢ã¿ããã¯ãã¡ãœãããæ瀺çã«ã€ã³ããŒãããããªãå Žåã®åé¿çã§ãã
ã»ãã³ãã£ã¯ã¹ã«é¢ããŠã¯ããã£ã«ã¿ãŒã¯ãšã«ããé ãããæŠå¿µã§ãã JavaScriptã§ã¯ãæååã倧æåã«ããããã ãã«å¥ã®ã»ãã³ãã£ã¯ã¹ãçºæããããšã¯ãããŸãããé¢æ°ãåŒã³åºããŸãã ãããŠããããJavaScripté¢æ°ã§ãã
äž»ã«ãJSå ã®æªãæ £è¡ãæ£åœåããããšããŠããããšããã³ã¡ã³ãã®ããã«ãç§ã®å人çãªãã€ã³ããæ確ã«ããããã«ãã1ã€ã³ã¡ã³ããããŸãã ç§ã¯ç¢ºãã«ããããããšã¯ããŠããŸããã
Vueã¯åãªããã³ãã¬ãŒãã·ã¹ãã ã§ã¯ãããŸãããããã³ãã¬ãŒãã·ã¹ãã ã§ãããããã®åœ¹å²ããé¢ããããšããŠããã®ã§ã¯ãªãããšæããŸãã ãããã£ãŠããã³ãã¬ãŒããšã³ãžã³/ã·ã¹ãã ãšããŠããã³ãã¬ãŒãã·ã¹ãã ã«æåŸ ã§ããããšã®éåžžã«æåããäŸãšããŠTwigãã³ãã¬ãŒããšã³ãžã³ãåãäžããŸãã ããã¥ã¡ã³ãã«ããã³ãã¬ãŒããã¶ã€ããŒåããã»ã¯ã·ã§ã³ãšãéçºè åããã»ã¯ã·ã§ã³ããããŸãã ãã³ãã¬ãŒãã·ã¹ãã ãšããŠãTwigã¯ããã£ã«ã¿ãŒãå«ãããã©ã«ãã®åäœããã£ããè©°ãŸã£ãŠããããããã³ãã¬ãŒããã¶ã€ããŒã«ãšã£ãŠã匷åã§ãã ããã«ãããéçºè 以å€ã®äººã¯ãPHPãçŽæ¥ç¥ããªããŠãããã³ãã¬ãŒãã·ã¹ãã ã倧éã«äœ¿çšã§ããŸãã 圌ãã¯ãTwigãæäŸãããã®ãšãã®äœ¿çšæ¹æ³ãåŠã¶å¿ èŠããããŸãã ç§ãVueã§ãããæ¢ããŠããŸãã ããã¥ã¡ã³ãã®ãVuefortemplatedesignersãã»ã¯ã·ã§ã³ãèŠããã§ãã ïŒç¬é¡ïŒ
ãŸããTwigã®æ¡åŒµæ§ãéåžžã«éèŠã§ãã ã¹ããã¯ããŒãžã§ã³ã§å ¥æã§ããªããã®ãããå Žåã¯ãè¿œå ããããšãã§ããŸãã ãããéçºè ãä»å ¥ãããšãã§ããçŽ æŽãããããšã¯ãæ¡åŒµæ©èœãå ±æã§ããããšã§ããã€ãŸãã1åã ãå®è¡ããå¿ èŠããããŸãã
ãããã®2ã€ã®ã¬ãã«ã®ãã¶ã€ããŒ/éçºè ã®ãã1ã€ã®åªããç¹ã¯ãã¯ããã«å¹ åºããŠãŒã¶ãŒããŒã¹ãç²åŸã§ããããšã§ãã ã¯ããã«åºããããã¯ããšåãã§ãã ãããŠãæ¯ãèãã®ããã©ã«ããååã§ãªããšããããã¯åœŒããé²ãã§åºç€ãšãªãèšèªãåŠã³å§ãããšãã§ãã ãããŠãããã¯åœŒãããã¹ããã©ã¯ãã£ã¹ãšæ®ããåŠã¶ãšãã§ãã
Vueã¯JSãåŠã°ãªããã°ãã³ãã¬ãŒããšã³ãžã³ã«ã¯ãªããªããšèšã£ãŠããã®ãªããããã¯åžå ŽäŸ¡å€ãããªãäžããŠãããšèšããŸãã ããªããèšããªããããªãã¯ä»ã®äººããã©ã°ã€ã³ãšããŠãã³ãã¬ãŒããšã³ãžã³ã®ããã®ãããã®ããŒã«ãçŽ æŽããããã®ã«ããããšãã§ããããã«ãã¢ãéãããŸãŸã«ããŸãã ãããããã®åŸã誰ãããã³ãã¬ãŒãã·ã¹ãã ã«ããã¹ããã®ã®ããã«æŠãããšã«ãªããŸãã ããã¯éå¹æã®ç§èŠã§ããããŸãã
ãã£ã«ã¿ã®äŸã§ããEvanã«ã€ããŠè©±ããŠããçåŸã®äžã§ãJSãåŠãã§ãã人ã§ããããããšããã³ãã¬ãŒããšã³ãžã³ãåŠãã§ãã人ã§ããã åŸè ã®å ŽåãäŒè©±ã¯éã£ããã®ã«ãªãã§ãããã
ãããã«ããã ç§ã¯ãŸã Vueãåå©ã®ã·ã¹ãã ã ãšæããŸãã ç§ã®èãããä»ã®äººã«Vueã®åœ¹å²ã«ã€ããŠäœããã®åœ¢ã§éã£ãèããããããããããªãããšãé¡ã£ãŠããŸãã ïŒç¬é¡ïŒ
ã¹ã³ãã
@ yyx990803ãã£ã«ã¿ãŒãé ãããæŠå¿µã§ããå Žåããªããããã¯æåã«é ãããã®ã§ããïŒ
<template>
ã®å
éšã§ã¯ã $data
ãabc
ãªã©ã®ãã¹ãŠã®å€éšå€æ°ãthis.$data
ãšthis.abc
ã«å€æããããã¬ãŒã³ãªjsé¢æ°ãå®çŸ©ãããŠããããã ãšæããŸãã³ã³ããŒãã³ãã®å€éšã¯åç
§ã§ããŸããã ãã®å¶éãå
æããããã«ãã£ã«ã¿ãŒãå°å
¥ãããŸããã
ãã®å¶éã¯ãŸã ååšããŸã---ç§ã¯æ£ãããšæããŸã---å¶éãåé€ããã«ã¯ãéçºè
ãthis.abc
ãåç
§ããããã«this.abc
ãæ瀺çã«ã³ãŒãã£ã³ã°ããã§åç
§ãããããã«jsé¢æ°ã«ã¢ã¯ã»ã¹ããå¿
èŠããããŸãjsã
ããããããã¯ããŸãã«ã匷åãªæ©èœã§ãããæªçšããããããå€ãã³ãŒãã移è¡ããã®ã¯èŠçã«ãªããŸãã çŸåšã®æ§æã¯ç§ã«ã¯ãããããã£ãšè¯ãèŠããŸãã
ãã£ã«ã¿ã¯åºæ¬çã«jsé¢æ°ã§ãããã³ã³ããŒãã³ãã«ã€ã³ããŒãããå¿ èŠãããããšã«åæããŸãã ã¡ãœãããšåãå Žæã§å®çŸ©ãããŠããã®ã奜ãã§ã¯ãããŸããã
çããããã«ã¡ã¯ã ç§ã¯ã¹ã¬ããå šäœãèªã¿ãŸããããããŠããã¯ç§ãæããã®ã§ãã
orderBy
filterBy
ããã®ä»ã®çµã¿èŸŒã¿ãã£ã«ã¿ãŒãèŠéãããšã¯ãããŸããç°¡åãªèŠçŽãšããŠã jsããã€ãã£ãã®ãã€ãæŒç®åãå®è£ ãããŸã§ã¯è¯ã解決çã«ãªããšæããŸããããã€ãæŒç®åããã©ã°ã€ã³ãšããŠäœ¿çšãã2.0ããŒãžã§ã³ããã®ãŸãŸã«ããŠããããšã§ãã ã ããããŠãŒã¶ãŒã¯ããããšãã§ããŸã
Vue.use(require('vue-pipe'))
æ°æ©èœã®å®è£ ãåŸ ã€éãå»æ¢ããããªã©ã®èŠåãå«ãŸããå¯èœæ§ããããŸãã 誰ã§ããã®ãã©ã°ã€ã³ãå®è£ ã§ããããšã¯ç¥ã£ãŠããŸãããVueããŒã ã«ãã£ãŠæäŸãããç¶æãããŠããã°ãããã¯å¯èœã§ããããïŒ
ç§ã¯ééã£ãŠãããããããŸããããVueããã©ã°ã€ã³ãã³ã³ãã€ã©ãŒã«æ··ä¹±ãããããšã¯ãªããšæããŸãã
@ azamat-sharapovãã¡ããéããŸãã ç§ã¯ãããVueã³ã³ãã€ã©ãå°ç¡ãã«ããã ãããšã¯æã£ãŠããŸããã§ããïŒopen_mouthïŒ
@YerkoPalmaç§ã¯çµ¶å¯Ÿã«ãã€ãæŒç®åã_倧奜ã_ã§ãã é¢æ°åèšèªã§å·æã«äœ¿çšããŠãããJavaScriptã§äœ¿çšããã®ãåŸ ã¡ãããŸããïŒ _ããã_ãVueã«ãã£ã«ã¿ãŒããªãã£ããšæ³åããŠã¿ãŠãã ããã ããã³ããšã³ããã¬ãŒã ã¯ãŒã¯ãJavaScriptã®æ§æãæ¡åŒµããããšãèŠæ±ããŸããïŒ ããã¯ãUIãã¬ãŒã ã¯ãŒã¯ã§ã¯ãªããBabelãŸãã¯JSãžã®ã³ã³ãã€ã«èšèªã®ãã¡ã€ã³ã§ãã ç§ããã䜿ãããã«ãLiveScriptã®ãããªèšèªã䜿çšãããå Žåã¯ã䜿çšã§ããŸãã ããããããã§ã®åé¡ã¯Vueã§ã¯ãããŸããã ããã¯JavaScriptèªäœã«ãããç§ãã¡ã¯ãããä¿®æ£ããããã«ããã«ããããã§ã¯ãããŸããã
ããã«ã2.0ã§ã®ã¬ã³ããªã³ã°ã®çµæãBabelãä»ããŠåžæã©ããã«ãã€ãã§ããå Žåã¯ãå¿ èŠã«å¿ããŠãTC39ã§è¿œè·¡ãããŠããªããã©ã°ã€ã³ã䜿çšããããšãã§ããŸããããã¯ãJavaScriptã®ã©ãã§ãã代ããã«äžè²«ããŠäœ¿çšã§ããŸãããã³ãã¬ãŒãã ãã§ãã ãããã£ãŠããã€ããå¿ èŠãªå Žåã¯ããã€ãã䜿çšã§ããå¯èœæ§ããããŸãã ãããŠãä»æ¥1.xã§ããã䜿çšããããšãã§ããŸãããã³ãã¬ãŒãã§äœ¿çšãããã€ãã¯ãBabelã®ãã®ãšã¯ç°ãªãåªå é äœãšåäœãæã€å¯èœæ§ãããããšã«æ³šæããŠãã ããã
@smolinariä»ã ç§ãèãç¶ããŠãã2ã€ã®ãã¬ãŒãºïŒããã³ãã®ããªãšãŒã·ã§ã³ïŒããããŸãïŒ
ã©ã¡ãããç§ãã¡ããããã®ã°ã«ãŒãã«ã€ããŠèããŠããªããšããä»®å®ãæ瀺ããŠããŸãã
ããã«ã€ããŠã¯åã«è¿°ã¹ãŸããããç¹°ãè¿ããå¿ èŠã ãšæããŸãã ã³ã¢ããŒã ã®_å šå¡_ã¯ããã¶ã€ããŒãããã³ããšã³ãéçºè ããŸãã¯äž¡æ¹ã®çµã¿åããã®ããããã§ãã ç§ãã¡ã¯æ¯æ¥ãããã®ããŒã«ãèªåã®ä»äºã«äœ¿çšããŠããŸãã Vue2.0ã䜿çšããŸãã ç§ãä¿¡ããŠãã ãããç§ãã¡ã¯ãã®ããšãèããŠããŸãã ð
åå¿è ã®æ¹ã¯ãã¡ãã§ã±ãŒã¹ãäœããŸããããããå°ã詳ãã説æããŠãããããšæããŸãã ç§ã¯æè²è ã§ãã ãããŠãç§ã¯ãã£ã«ã¿ãŒãæé€ããããšã®æ¯æè ã§ããã_åå¿è ã®ããšãèããŠããŸã_ã ç§ã¯å人çã«äœçŸäººãã®äººã ãããããã¯å人以äžã®äººã ã«ãéåžžã¯ãŒãããWebéçºãå®è·µããæ¹æ³ãæããŠããŸããã 以åã®ã³ãŒãã£ã³ã°çµéšã¯ãããŸããã ç§ã¯ãããäžåŠçãé«æ ¡çã倧åŠçãããã®å€§äººããããŠé«éœ¢è ãšäžç·ã«è¡ããŸããã
ãã®èŠ³ç¹ããããã£ã«ã¿ãŒã¯æåã¯åºæ¿çãªéæ³ã®ããã«èŠãããããããŸããããéãããå©äŸ¿æ§ã®ããã«ããè€éãªãã®ãå°å ¥ããããšã«ãããæçµçã«ã¯åŠçã®åŠç¿ãé ãããŸãã 圌ããAngularãVueã«åå ããããšããªãããã®äŒè©±ãé転ããå ŽåïŒ2.0ã§ãããã_玹ä»_ããããšããŠããïŒããªãããããå¿ èŠãªã®ãããã€äœ¿çšãã¹ããã説æããã®ã¯é£ããã§ãããã
2.0ã§éæšå¥šã®è©±ãåºãåã¯ãã³ãŒãã¹ã¯ãŒã«ã®ã«ãªãã¥ã©ã ãããã£ã«ã¿ãŒãåé€ããŠããŸãããããã¯ããã£ã«ã¿ãŒãåå¿è ã«ãšã£ãŠè¯ãããšããã害ãåãŒããŠãããšããååãªèšŒæ ãéããããã§ãã ããããã¡ãœãããèšç®ãããããããã£ãªã©ãããçšéã®åºãVueæ©èœã®çµéšãç©ãã§ã»ãããšæããŸãã ãã£ã«ã¿ãŒã䜿çšãããšãæªãç¿æ £ãèŠã€ãããããªãããããã£ã«ã¿ãŒã®äœ¿çšããå§ãããŸããã§ããã
ããããããã®2ã€ã®èŠæ ãå¯ããã€ããããšãé¡ã£ãŠããŸãã ããããŸãã ð
ããããVueã«ãã£ã«ã¿ãŒããªãã£ããšæ³åããŠã¿ãŠãã ããã ããã³ããšã³ããã¬ãŒã ã¯ãŒã¯ãJavaScriptã®æ§æãæ¡åŒµããããšãèŠæ±ããŸããïŒ
ãã¡ãããåè¿°ã®Twigã®ããã«ããã£ã«ã¿ãŒã¯_templates_ã«ãšã£ãŠéåžžã«èªç¶ãªã®ã§ãç§ã¯ããããŸãã ãã€ãæŒç®åã䜿çšããããšã¯ããã³ãã¬ãŒãã«å£ã²ãã®æ§æã䜿çšããããšãšåããããèªç¶ãªããšã ãšæããŸããã€ãŸããå£ã²ãã¯htmlã§ã¯ãªããjavascriptã§ããªãã®ã§ãåé€ããŸããïŒ ãã€ãæŒç®åãšã®éãã¯äœã§ããïŒ
ãåäŸãã¡ã«ã€ããŠèããããšããè°è«ã¯ã°ãããŠããã ç§ã®ç¥ãéããVueã¯JavaScriptãæããããã«èšèšããããã®ã§ã¯ãªããããã³ããšã³ãã®éçºè ãããéããããã«èšèšããããã®ã§ãã åŸè ã®å Žåããã£ã«ã¿ãŒã¯çŽ æŽãããã§ãã
圌ããAngularãVueã«åå ããããšããªãããã®äŒè©±ãé転ããå ŽåïŒ2.0ã§çŽ¹ä»ããããšããŠããïŒããªãããããå¿ èŠãªã®ãããã€äœ¿çšãã¹ããã説æããã®ã¯é£ããã§ãããã
ç§ã¯éåžžã«åæããŸããã ç§ã¯2005幎ããDjangoãšåŒã°ããPythonãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠããããã®ãã³ãã¬ãŒãèšèªïŒåŸã«çãŸããã»ãšãã©ã®ãã³ãã¬ãŒãèšèªã®ã€ã³ã¹ãã¬ãŒã·ã§ã³ãšãªã£ãŠããŸãïŒã«ã¯ãæåãããã£ã«ã¿ãŒããããŸãã 10幎以äžããã³ããšã³ãã®éçºè ãšäžç·ã«äœ¿çšããåŸãç§ã¯ãããã®çŸãããšæçšæ§ã«æè¬ããããã«ãªããŸããã ãã®æ§æããªããªãã®ãèŠãã®ã¯æ²ããã§ãããã
ïŒDjangoããã£ã«ã¿ãŒã§è¡ãããšã¯æ¬¡ã®ãšããã§ãïŒhttpsïŒ//docs.djangoproject.com/en/1.9/ref/templates/builtins/#built-in-filter-referenceïŒ
@Uninenã¯ããªãã®å£èª¿ã«
ãµãŒããŒåŽã®ãã³ãã¬ãŒãèšèªã«é¡äŒŒããŠããå Žåã泚æãã¹ãéèŠãªç¹ã®1ã€ã¯ããµãŒããŒåŽã®ãã³ãã¬ãŒãèšèªã«ã¯ãVueãã³ãã¬ãŒããšåãéã®æè»æ§ããªãããšã§ãïŒèšç®ãããããããã£ããªããåŒãå¶éãããŠããŸãïŒã ãŸããéçãªæååãåºåãããšãããŸã£ããç°ãªãç®çã§æ§ç¯ãããŠããŸãã Vueãã³ãã¬ãŒãã¯ãã€ã³ã¿ã©ã¯ãã£ãDOMã®è¡šçŸã§ããåæ¹åãã€ã³ãã£ã³ã°ãã€ãã³ããã³ãã©ãŒãã³ã³ããŒãã³ããããããªã©ããããŸãã ãã£ã«ã¿ã¯ãVueã³ã³ããã¹ãã®éåžžã«éããããŠãŒã¹ã±ãŒã¹ã«ã®ã¿é©åããŸããä»æ¥ãã©ãã«ã§ããã£ã«ã¿ãèš±å¯ããããšã¯æªãèãã ãšæããŸããããšãã°ãv-modelãv-forãv-onã®ãã£ã«ã¿ã¯ãè¯ããããè€éã«ãªããŸãã
èãããã代æ¿æ¡ã®1ã€ã¯ããã£ã«ã¿ãŒãä¿æããããšã§ãããããã¹ãã®è£éã«ã®ã¿äœ¿çšã§ããŸããã€ãŸãããã£ã¬ã¯ãã£ãã§ã¯ãªãã {{ }}
å
ã§ã®ã¿äœ¿çšã§ããŸãã
èå³æ·±ãåèè³æãšããŠïŒAngular 2ã«ã¯ãŸã ãã£ã«ã¿ãŒïŒããã€ããã«ååãå€æŽãããŠããŸãïŒããããŸããããªã¹ããã£ã«ã¿ãŒãã£ã«ã¿ãŒãæå³çã«åé€ãããŠããŸãã
ç§ã®èšèã§ç³ãèš³ãããŸãããã誰ãã䟮蟱ããã€ããã¯ãããŸããã
ç§ã«ãšã£ãŠããã¬ãŒã ã¯ãŒã¯ã®ç®çã¯ãé£ããããšãå®è¡ãããããã®ããŒã«ã䜿çšããéçºè ãç°¡åã«èŠããããã«ããããšã§ãã ç§ã¯ãŸã æ§æãæã¡è² ããããšã¯ã§ããªããšäž»åŒµããŠãããç¹°ãè¿ãã«ãªããŸããããããããŸãããã®ãèŠãã®ã¯æ²ããããšã§ãã
ç§ã¯å éšã®ã¡ã«ããºã ã®å€ããç¥ããŸããããç解ããŠããŸãããããŠãŒã¶ãŒã®èŠ³ç¹ããã¯ãå®çšæ§ã¯çŽç²ããäžåããŸã:)
é¢é£ããã¡ã¢ã§ã¯ããã®ã³ãã¥ããã£ã«ã©ãã»ã©ã®æ ç±ãããããã«èŠããããèŠãã®ã¯èå³æ·±ãããšã§ãã ç§ã«ãšã£ãŠãVueã¯æ°é®®ã§æŽ»æ°ã«æºã¡ãããŒã«ã§ãããããããããããç§èªèº«ããã®ç¹å®ã®å°å±ã®å¡è£ ã«åå ããªããã°ãªããªãã£ãçç±ã§ã:)
å¥ã®ããŒã¿ãã€ã³ãã®å ŽåãEmberã«ã¯ãã£ã«ã¿ãŒããªããã³ã³ããŒãã³ãã¡ãœãããèš±å¯ãããŠããŸããããèšç®ãããããããã£ã¯ãããŸãã
ãã³ãã¬ãŒãå
å€æãå®è¡ããçŽç²é¢æ°ã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ããã³ãã«ããŒãã«ããŒ/æ®ãç«ãã«ããŒãç»é²ããå¿
èŠããããŸãã
http://emberjs.com/api/classes/Ember.Helper.html
ãã³ãã«ããŒãã«ããŒã¯ããã³ãã«ããŒãã«ããŒã§ã¯ãªããã®ãšæ§æçã«åºå¥ããããããç§ã¯ãããåãäžããŸãã 圌ãã¯ãããé 管ãã£ã«ã¿ãŒã®æ§æãšå ±éããŠããŸãã ãã ãããã³ãã«ããŒãã³ãã¬ãŒãã¯ãããžãã¯ã¬ã¹ãã§ããããããã³ãã¬ãŒãå ã®é¢æ°åŒã³åºãã«ã¯ç¹å¥ãªæ§æãå¿ èŠã§ãã Vueã«ã¯ãªãåé¡ã
ãã£ã«ã¿ã¯åå¿è ã«ãšã£ãŠã¯ç°¡åã§ããé åã®ããªãã®åºåãŸãã¯filter \ ordersearchã«äœ¿çšããããšã§éæ³ãèŠããŸã
{{ article.date.created_at | moment 'MM.DD.YYYY HH:mm:ss' }}
ç°¡åã«å®çŸ©ã§ããŸã
Vue.filter('moment', (str, format) => moment(str).format(format));
ãã³ãã¬ãŒãã§ã¯ã·ã³ãã«ã§æ確ã§ãã2.xã®å Žåãå€éšã¢ãžã¥ãŒã«ã§ãã£ã«ã¿ãŒãå®çŸ©ãããã³ãã¬ãŒãã§ãã£ã«ã¿ãŒãååŸããŸãã
import moment from 'moment'
methods:{
moment(date, format){
return moment(str).format(format)
}
}
ãšãã³ãã¬ãŒãã§
{{ moment(article.date.created_at, 'MM.DD.YYYY HH:mm:ss') }}
ææ¡ãšããŠãå€ããã£ã«ã¿ãŒããã³ãã¬ãŒãã«æ®ããŠããã£ã«ã¿ãŒãå¥ã®ã¢ãžã¥ãŒã«ã«ç§»åããŠãã¡ãœããã»ã¯ã·ã§ã³ãã䜿çšããŠã¿ãŸãããïŒ
ãããã£ãŠãå¿ èŠãªå Žåã¯ã
npm install vue-utils
utilsããã±ãŒãžã®ç¹å®ã®ãã£ã«ã¿ãŒã䜿çšããŸã
import {moment} from 'vue-utils/date'
import {price} from 'vue-utils/numbers'
methods:{
moment, price
}
å ±éã®ãã£ã«ã¿ãŒãšããŠäœ¿çšããŸã
{{ article.date.created_at | moment 'MM.DD.YYYY HH:mm:ss' }}
{{ product.price | price }}
çµæãšããŠãããã¯åçŽãªé¢æ°åŒã³åºãã«å€æãããŸã
moment(article.date.created_at, 'MM.DD.YYYY HH:mm:ss')
price(product.price)
_ããŒã_
ç§ã«ãšã£ãŠããã£ã«ã¿ãŒã¯ãæ¥ä»ãæ°å€ãæååãªã©ã®ããŒã¿ããã©ãŒãããããããã«æããã䜿çšãããŸãã é
å/ãªããžã§ã¯ãããã£ã«ã¿ãªã³ã°ããã«ã¯ãäžè¬çãªvueã¢ãžã¥ãŒã«ããèšç®ãããé¢æ°ã䜿çšããæ¹ããããšæããŸãã
import _ from 'vue-utils/array'
computed:{
ordersTable(){
return _(this.orders)
.filterBy(this.filter)
.sortBy('date', -1)
.limit(10)
}
}
å©ç¹ïŒ
åå¿è
ã¯å€ããã£ã«ã¿ãŒãç°¡åã«äœ¿çšã§ããŸãããèšç®ã§ã¯ãã³ãã¬ãŒãã§ããªãã®é¢æ°ã䜿çšããŠããŒã¿åºåããã©ãŒãããããããã°ã©ããŒã¯ããçšã«ç¬èªã®é¢æ°ã¢ãžã¥ãŒã«ãäœæããŠäœ¿ããããããããšãã§ããŸãã
_ãªãã¢ãžã¥ãŒã«ãåé¢ããã®ã§ããïŒ_
Vueã®ã³ã¢ã«ããå¿
èŠã¯ãªããšæããŸãããVueã«ã¯developerstemplateãã¶ã€ããŒçšã®utilsãå¿
èŠãªã®ã§ãlodashãmomentãªã©ãåžžã«å¿
èŠãšããå¿
èŠã¯ãããŸãããnpmããutilsãã€ã³ã¹ããŒã«ããã ãã§äœ¿ãããããªããŸãããå€ãåŒã³åºãæ§æã¯ä¿åãããŸãããã³ãã¬ãŒãã
ãããããã£ã«ã¿ãŒã«ã€ããŠ1ã€ã®éèŠãªèããè¡ãå¿
èŠããããŸããã€ãŸããvuexã®ã²ãã¿ãŒã®ãããªçŽç²é¢æ°ãå¿
èŠã§ãã
ãµããŒããç°¡åã§ãusereuseextendãç°¡åã§ããã³ãã¬ãŒããããèŠãããšãã§ããŸãã
å¿ èŠãªã®ã¯ãæ確ãªã¢ããã°ã¬ãŒããã¹ãšãJavascriptã³ãŒããã¢ãžã¥ãŒã«åããæ¹æ³ãåŠã³ãããšããé¡æã§ãã
@thelinuxlichãã£ã«ã¿ãŒã«ã€ããŠè©±ããŸãã
{{ article.date.created_at | moment 'MM.DD.YYYY HH:mm:ss' }}
ãã ã®ã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ãŒ
{{ moment(article.date.created_at, 'MM.DD.YYYY HH:mm:ss') }}
ããããVue \ javascriptã®åå¿è åãã®ãã£ã«ã¿ãŒãå®å šã«é€å€ããã®ã¯æªãããšã§ãã ãªãVueã®ãããªLaravelã³ãã¥ããã£ãªã®ãïŒ ã·ã³ãã«ã§ãã¯ãã«ã ããã§ãã
ãã£ã«ã¿ãå®å šã«åé€ããå Žåã¯ã_ "ãã³ãã¬ãŒããã¶ã€ã" _ã®ä»£ããã«ãé åã䞊ã¹æ¿ããããã£ã«ã¿ãªã³ã°ãããããå¿ èŠã¯ãããŸãããã³ãŒããã©ãŒã ã®äŸãå ¥åããŠçµæãååŸããã ãã§ãã
ããã°ã©ããŒã¯Javascriptã³ãŒããã©ã®ããã«_ã¢ãžã¥ã©ãŒåããããç¥ã£ãŠããå¿ èŠããããŸãããå°ããªããšã®ããã«ããã䜿çšããæ®ãã®äººã¯ãããç¥ãå¿ èŠã¯ãããŸããã
_ããã³ãã¬ãŒããã¶ã€ããŒã®ããã«ã_ã«ã€ããŠè©±ããªããããã«çœ®ãããšãã§ããŸã
<script src="vue-utils.js"></script>
ããã³å éšã³ãŒãã®äœ¿çš
Vue.use(VueUtils)
computed:{
ordersTable(){
return this.utils.array(this.orders)
.filterBy(this.filter)
.sortBy('date', -1)
.limit(10)
}
}
äŸããããããŠèªãã«æã£ãŠãé åããã£ã«ã¿ãªã³ã°ããŠãœãŒãããããã«jsãç¥ãå¿ èŠã¯ãããŸãããå€ãã®äººãäœãããããã®ã§ããã次ã®ãããªã³ãŒããç解ããã®ã¯é£ããã§ãã
computed: {
filteredThings () {
return this.things
.filter(item => item.title.indexOf('foo') > -1)
.sort((a, b) => a.bar > b.bar ? 1 : -1)
.slice(0, 5)
}
}
ã§ãããããã®ã¿ã€ãã®äººã ã®ããã«è€éãªããšãããå¿ èŠã¯ãããŸãããããã«ç°¡åãªè§£æ±ºçãäžããããšãã§ããéçºè ã«ãšã£ãŠãããè¯ãã®ã§ããã°ã
èãããã代æ¿æ¡ã®1ã€ã¯ããã£ã«ã¿ãŒãä¿æããããšã§ãããããã¹ãã®è£éã«ã®ã¿äœ¿çšã§ããŸããã€ãŸãããã£ã¬ã¯ãã£ãã§ã¯ãªãã{{}}å ã§ã®ã¿äœ¿çšã§ããŸãã
ããã¯éåžžã«è¯ã劥åæ¡ã ãšæããŸãã ãã¹ãŠã®äººãæºè¶³ãããããã§ã¯ãããŸãããããããŸã§ã«ãã£ã«ã¿ãŒã䜿çšããã®ã¯ããã ãã§ãããçŸåšããã£ã«ã¿ãŒããã以äžã®ããšãå®è¡ã§ããã®ã¯å¥åŠãªããšã§ãã
ãã£ã«ã¿ã䜿çšããåæ¹åãã£ã«ã¿ãå¹æçã«åé€ããããšã§è€éãã軜æžãããå Žåã¯ã䟿å©ãªããã¹ããã©ãŒããããå¯èœã«ãªããŸãã
ç§ã®æèŠã§ã¯ãmomentjsãã£ã«ã¿ãŒã®äŸã§ã¯ããã§ã«ãã³ãã¬ãŒãã«ããŸãã«ãå€ãã®ããžãã¯ãæž¡ãããŠããŸãã
çå£ã«ãããªãã¯ãããTC39ã«éãããŸã§ããã®ãã¹ãŠã®ããã€ãã©ãããã¹ããã¯ãªããžããªã«åããã¹ãã§ã:)
@ yyx990803ãš@VitaliyLavrenkoã®äž¡æ¹ãææ¡ãããã®ã奜ãã§ãã ããã¯è¯ãäžéç¹ãããããŸããã
ã¹ã³ãã
ç§ã¯@VitaliyLavrenkoã®ææ¡ã奜ãã§ããã䌌ããããªããšãèšããšããã©ã°ã€ã³ã«ãã€ãæŒç®åãå«ããããšã«ã€ããŠ@ azamat-sharapovã¯ããã©ã°ã€ã³ãã³ã³ãã€ã©ãå°ç¡ãã«ãã¹ãã§ã¯ãªããšèšããŸãã...ã³ã¡ã³ãã誀解ããã ãã§ããïŒ
@thelinuxlich
ããªããèªãã®ã«äœãè¯ãã§ããïŒ
<div v-for="thing in things | filterBy 'foo' | orderBy 'bar' | limitBy 5">
ãŸã
computed: {
filteredThings () {
return this.things
.filter(item => item.title.indexOf('foo') > -1)
.sort((a, b) => a.bar > b.bar ? 1 : -1)
.slice(0, 5)
}
}
éçºè ãšããŠèããjavascriptãç¥ããªã人ã«èããŠãã ããã
ç§ã®å Žåãéçºè ã§ã¯ãªãæ¹ã次ã®ããã«ãªããŸãã
Vue.use(VueUtils)
computed:{
ordersTable(){
return this.utils.array(this.orders)
.filterBy(this.filter)
.sortBy('date', -1)
.limit(10)
}
}
ããã¯çãäžã§ãããããŠvue-resourceã®ããã«ã¡ããã©äžè¬çãªlibãšããŠäœ¿ãããŸãã
ãã€ãã«ã€ããŠã¯ãã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ãŒã§ã
ç©äºã®äº| filterBy'foo '| orderBy'bar '| limitBy 5
ã«ãšã£ãŠ
thing in limitBy(orderBy(filterBy(things, 'foo'), 'bar'), 5)
èªã¿ãããã§ããïŒ
2ã€ã®diffãã³ãã¬ãŒãã«ããŒã¿ãæž¡ãå¿ èŠãããå Žåã1ã€ã®ããŒã¿ã«å¯ŸããŠ2ã€ãŸãã¯3ã€ã®å€æŽãä¿åããŸããïŒ
ããã次ã®ãããªãã®ã§ããå ŽåïŒ
padLeft(capitalize(title), 10)
padRight(upper(title), 5)
ç§ã¯ç¶æ³ãæœè±¡åããŸãããã1ã€ãŸãã¯2ã€ã®ãã³ãã¬ãŒãã§äœ¿çšããå Žåã¯ã©ããªããŸããïŒ 10åãŸãã¯100åã®ãªããžã§ã¯ãã®ããŒã¿ãä¿åããå¿ èŠããããŸããïŒ ã¡ã¢ãªäœ¿çšéãå¢ãããŸããïŒ ã¯ãããã«ããŒã¡ãœããã䜿çšããŠãã³ãã¬ãŒãã§äœ¿çšã§ããŸãããJavaScriptããé ãé¢ãã_ "ãã³ãã¬ãŒããã¶ã€ããŒåã" _ã®å Žåã¯ãã¿ã€ãã«ã®ãããªãã®ã䜿çšããŸãã padLeft 10ã§ãããé¢æ°åŒã³åºãã«å€æããå¿ èŠããããŸããç°¡åã§æ©èœçã§ãã
å·®åã®äººã«ã€ããŠèããŠã¿ãŠãã ãããéçºè ã¯å·®åã®æ¹æ³ã§ãããç°¡åã«è¡ãããšãã§ããŸãããä»ã®äººã¯ãããç°¡åã«ããããšæã£ãŠããŸãã
ããäžåºŠèšããŸããããã³ãã¬ãŒãã®ããžãã¯ãå€ããããšã¢ã³ããã¿ãŒã³ã«ãªããŸãã ç¹å®ã®DSLïŒãã£ã«ã¿ãŒïŒãåŠã¶ä»£ããã«ãJavascriptãåŠã¶å¿ èŠããããŸãã
@thelinuxlich JSXã䜿çšããã ãã§ãåæ¹åãã€ã³ãã£ã³ã°ããã®ä»ã®ããã€ãã®æ©èœã§ReactãååŸã§ããŸãã
ããããVueã䜿çšãããšãjavascriptãç¥ããªã人ã§ããgoogleã䜿çšãããšäœããå®è¡ã§ããŸãããã€ããå«ããªå Žåã¯ã䜿çšããªãã§ãã ããã 次ã®ãããªãã®ãè¿œå ã§ããŸã
Vue.config.pipeFuncCall = true
ãããŠãããªãã¯ããããªã³/ãªãã«ããããšãã§ããŸãããããäœäººãã®äººã ã«ãšã£ãŠããã¯ç°¡åã§ãã
_ããäžåºŠèšããŸãããJSéçºè ã¯Vueã䜿çšã§ããã ãã§ãªããVueã®æã匷åãªåŽé¢ã§ãã_
æšæºã®äžè¬çãªãã£ã«ã¿ãŒãå¿ èŠã§ãããå¥ã®libã«ãããvueã«è¿œå ããŠäœ¿çšããã®ãç°¡åã§ãã
ãŸãã¯ãVueãASMã®ãããªãã®ã«ããåªããéçºè ã ããããã䜿çšã§ããããã«ãããã§ããïŒ
çãããVueã³ã¢ããŒã ãäžãã決å®ã¯éåžžã«ãã説æãããŠãããšæããŸãã åãããšãäœåºŠãç¹°ãè¿ããŠãããããã°ãäœãæ°ãã䟡å€ã®ãããã®ã ãã§ã³ã¡ã³ãããããšã¯ã§ããŸãããïŒ
ããšããããèšèªã®ååãå·ã€ãããšããŠããéJSéçºè ã«ãšã£ãŠããç°¡åã§ããããšãVueã®ã³ã¢ååã®äžéšã§ãããªããç§ã¯ããªãã«åæããŸãããããããããã§ã¯ãããŸããã
åã«ãèšã£ãããã«ããã£ã«ã¿ãŒã¯å»æ¢ãããŠã倧äžå€«ã§ããã䟿å®äžããããèŠéãããšã¯ééããããŸããããéåžžã«ãã䌌ããã£ã«ã¿ãŒã·ã¹ãã ããã©ã°ã€ã³ãšããŠå°å ¥ã§ããããšã¯ééããããŸããã
å°ãåã«æŠå¿µå®èšŒã®äŸã瀺ããŸãããããã¯ãèšç®ãããå°éå ·ãã€ã³ã©ã€ã³ã§äœ¿çšã§ããŸãã
<ul>
<li v-for="item in f(items).filterBy(foo).orderBy(bar).limitBy(5).apply()">
{{ item.foo }}
</li>
</ul>
äžæ¹ã誰ãããã€ãã欲ããã£ãŠãããªããç§ã¯ããããã®ãããªãã®ã§ã§ãããšç¢ºä¿¡ããŠããŸã
<ul>
<li v-for="item in p(items, 'filterBy foo | orderBy bar | limitBy 5')">
{{ item.foo }}
</li>
</ul>
ãŸãã¯ããã©ã°ã€ã³ãåŒã解æããå¿ èŠã«å¿ããŠåŠçã§ããããã¯ãããå Žåããããå¯èœã§ãããå®è£ ã®è€éããšãã®å¹æã«ã®ã¿äŸåããŸãããã¬ãŒã ã¯ãŒã¯ïŒããã©ãŒãã³ã¹/ãµã€ãºïŒã§ã @ yyx990803ãå®éã«ãã®æ¹åã«é²ã¿ãããã©ããïŒ
䜿ãããããšã¬ã¬ã³ããªä»£æ¿åïŒãã©ã°ã€ã³ãªã©ã®ã³ã¢ïŒãäžããããã°ãããªãæ©ãæ £ããããšãã§ãããšæããŸãã
@ rigor789ã¯ãé åã®ãã£ã«ã¿ãªã³ã°ã䞊ã¹æ¿ããªã©ã«äœ¿çšããŸããèšç®ã䜿çšãããšãéåžžã«ã¯ãªãŒã³ã«ãªããŸãã ããããããŒã¿ãdiff圢åŒã§è¡šç€ºããã®ã¯åé¡ã ãšæããŸãã
ãã£ãŒã«ãcreated_atãããããã³ãã¬ãŒãã§å¿ èŠãªå Žåã¯ãdd.mm.YYYYãŸãã¯ãªã³ã¯ã§ã¬ã³ããªã³ã°ããŸã
<a href="dd">dd</a>.<a href="mm">mm</a>.<a href="YYYY">YYYY</a>
çŸåšäœ¿çšãããŠãããã®ãã£ã«ã¿ãŒã®å Žåã2.xããã©ã®ãããªä»£æ¿æ段ãå ¥æã§ããŸããïŒ
ä»ã®ãšãã䜿çšããã ã
{{ date(created_at, 'dd') }}
æ¥ä»ã¡ãœãããå®çŸ©ããŸããããã³ãã¬ãŒããããŒãã£ã«ãªããŸããè¿œå ã®3ã€ã®ãã£ãŒã«ããæ ŒçŽãããšã¡ã¢ãªãæ¶è²»ããã100ã200åã®ãªããžã§ã¯ãã®å Žåã¯éããªããŸãã
æçµæ±ºå®ã¯æ¬¡ã®ãšããã§ãã
html
{{ date | formatDate('YY-MM-DD') }}
ãšãŽã¡ã³ãèããŠãããŠããããšãã ãããVueãçŽ æŽããããã®ã«ããŠããçç±ã§ãã çŽ æŽããããªãŒããŒãããŸãã ïŒç¬é¡ïŒ
ã¹ã³ãã
@ yyx990803 ïŒ@ chrisvfritz
ãã®è°è«ã«åãããŠããããã«æããããã®ã®1ã€ã¯ãåæ¹åãã£ã«ã¿ãŒã§ãã åæ¹åãã£ã«ã¿ãŒã¯ãä»ã®ææ¡ããããœãªã¥ãŒã·ã§ã³ã§è€è£œããã®ãæãé£ãããã£ã«ã¿ãŒã§ãã
ãã®ãŠãŒã¹ã±ãŒã¹ããäºçŽ°ãªããŸãã¯ãããã»ã©è€éã§ã¯ãªãããšããŠåŽäžããããšã¯éå¹æã§ãã ç§ã¯ãããäžèŠæš¡ããã³å€§èŠæš¡ã®ã¢ããªã±ãŒã·ã§ã³ã®äž¡æ¹ã§äœ¿çšããŸããã ããã¯é©ç°çã«æ©èœããŸããïŒ ãã¢ã¯å¿ ç¶çã«ã·ã³ãã«ã§ããããã¯ããã¯ã¯ãã£ããããŠããŸãã
v-for
ã®é
åãåŠçããå Žåãããã«æ··ä¹±ããŸãïŒããã§ãæå³çã«åçŽã§ãïŒã é
åãå埩åŠçããŠããèšç®ãããããããã£ã«é Œãããšã¯ã§ããŸããã ãããåé¿ããå¯äžã®æ¹æ³ã¯ãé
åå
ã®ã¢ã€ãã ããšã«åå¥ã®ã³ã³ããŒãã³ããçšæããããã«ãã€ã©ãŒãã¬ãŒããè¿œå ããããšã§ãããã®äŸããã£ã«ã¿ãŒãšæ¯èŒããŠãã ããã
`` `js
'some-currency-filter'ããé貚ãã€ã³ããŒãããŸãã
'products-stub'ãã補åãã€ã³ããŒãããŸãã
æ°ããVueïŒ{
elïŒdocument.bodyã
ããŒã¿ïŒ{補å}ã
ãã£ã«ã¿ïŒ{é貚}ã
}ïŒ;
`` `
ãã£ã«ã¿ã®ãªããã®ãžïŒ
`` `js
'some-currency-filter'ããé貚ãã€ã³ããŒãããŸãã
'products-stub'ãã補åãã€ã³ããŒãããŸãã
æ°ããVueïŒ{
elïŒdocument.bodyã
ããŒã¿ïŒ{補å}ã
ã³ã³ããŒãã³ãïŒ{
補åïŒ {
å°éå
·ïŒ['補å']ã
èšç®ïŒ{
äŸ¡æ ŒïŒ {
åŸãïŒïŒ {
æ»ãé貚.readïŒthis.product.priceïŒ;
}ã
setïŒvalueïŒ{
this.product.price = currency.writeïŒvalueïŒ
}
}ã
ééïŒ {
åŸãïŒïŒ {
é貚ãè¿ããŸããreadïŒthis.product.shippingïŒ;
}ã
setïŒvalueïŒ{
this.product.shipping = currency.writeïŒvalueïŒ
}
}ã
åãæ±ãïŒ{
åŸãïŒïŒ {
æ»ãé貚.readïŒthis.product.handlingïŒ;
}ã
setïŒvalueïŒ{
this.product.handling = currency.writeïŒvalueïŒ
}
}ã
å²åŒïŒ {
åŸãïŒïŒ {
æ»ãé貚.readïŒthis.product.discountïŒ;
}ã
setïŒvalueïŒ{
this.product.discount = currency.writeïŒvalueïŒ
}
}
}
}
}
}ïŒ;
`` `
äžèšã®ã©ããæžããããç¥ã£ãŠããŸãã
ïŒããã¯ãèšç®ãããããããã£ãã¡ã¯ããªãäœæããããšã§å°ãã¯ãªãŒã³ã¢ããã§ããå¯èœæ§ããããŸããããããã¯å¿ èŠä»¥äžã«åé·ã§ãããšããç¹ãæ®ã£ãŠããŸãïŒ
ã³ã¢ããŒã ã¯ãã£ã«ã¿ãŒãã€ãæ§æã«æåºãšããŠå察ããŠããããã«èŠããã®ã§ã v-model
ãã£ã¬ã¯ãã£ãã«filter
ãã©ã¡ãŒã¿ãŒãå°å
¥ããããšã¯å¯èœã§ããããïŒ
filter
paramã䜿çšãããšãäžèšã®JSã®æåã®ãšã¬ã¬ã³ããªããŒãžã§ã³ãç¶æããããžãã¯ãã€ãæ§æã®ä»£ããã«paramã䜿çšããããã«ãã³ãã¬ãŒããæžãçŽãããšãã§ããŸãã
<tr v-for="product in products">
<td><input type="text" filter="currency" v-model="product.price"></td>
<td><input type="text" filter="currency" v-model="product.shipping"></td>
<td><input type="text" filter="currency" v-model="product.handling"></td>
<td><input type="text" filter="currency" v-model="product.discount"></td>
</tr>
ããã¯ãå€ãã®å®åæãªãã§å ¥åãç°¡åã«ååŸã«å€æããæ©èœãç¶æããªãããéæ³ã®æ§æãæããªããšããé©åãªãã©ã³ã¹ããšãããšã«ãªããŸãã
ãããããé¡ãããŸãã
ãã£ã«ã¿ãã«ã¹ã¿ã ãã£ã¬ã¯ãã£ããšããŠçµã¿èŸŒãããã«äŸãæžãçŽããŸããïŒ jsfiddle ã
ãã£ã«ã¿ãŒã»ã©ç°¡æœã§ã¯ãããŸããããæ³åããŠããã»ã©èŠçã§ã¯ãããŸããã ãããŠãç§ãã¡å
šå¡ããã§ã«å©çšã§ãããã®ããããŒã¹ããŸãšããã®ã«ããã»ã©æéã¯ããããŸããã§ããã
@Nirazulã¯ãåãã£ã«ã¿ãŒã«å°çšã®ãã£ã¬ã¯ãã£ããäœæããããšã以åã«ææ¡ããŸããã ã¢ããªã§äœ¿çšãããã£ã«ã¿ãŒã®çš®é¡ããšã«ãã¹ãŠã®v-model
æ©èœãåå®è£
ããæ°ãããã£ã¬ã¯ãã£ããäœæããå¿
èŠãããã®ã¯ãåçŽã«éŠ¬é¹¿ããŠããŸãã
ããã«ããã£ã¬ã¯ãã£ãã¯ãã£ã«ã¿ãŒã®ããã«å®å
šã«ã¯æ©èœããŸããã å€ãå€æŽããåŸã«ãã£ãŒã«ãããŒãããŠããåãã©ãŒããããããŸããã ããã«ã v-model
ã¯ããã®ãã£ã¬ã¯ãã£ãã§è¡ããããã¯ããã«å€ãã®ããšãè¡ããŸãã
æ什ã¯æããã«ããå€ãã®æ©èœãšä¿®æ£ã§ä¿®æ£ããããšãã§ããŸãããèŠç¹ã¯æ®ããŸãããããã¯ãã¹ãŠãããã«äœ¿ããæ¬åœã«ã·ã³ãã«ãªãã®ã®äžã«ãããã³ããšã€ãã§ãã
ãã®ã¹ã¬ããã§ã«ã¹ã¿ã ãã£ã¬ã¯ãã£ãã«ã€ããŠèšåããŠããææ¡ã¯èŠãããšããããŸããã ãã®ã³ã¡ã³ããæããŠããã ããŸãããïŒ
ãæ³åã®ãšãããã¢ããªã§äœ¿çšã§ããããã«äœæããã³ãã¹ãããŠããŸããã 代ããã«ä»äœãã§ãããã瀺ãããã£ãã ãã§ãã ãããéåžžã«ç°¡åã«å¯èœã§ããã°ãããã»ã¹ãããã«èªååãããã©ã°ã€ã³ã®äœå°ããããããããŸããã
ãã®è¿
éã«èšè¿°ããããã£ã¬ã¯ãã£ããv-modelã®å®å
šãªæ©èœãæ¬ ããŠããããšã¯æããã§ãã ãã£ã«ã¿ã眮ãæããã«ã¯ããã©ã¡ãŒã¿ã修食åãçµã¿åããã1ã€ã®ã«ã¹ã¿ã ãã£ã«ã¿ãã£ã¬ã¯ãã£ãã§ååãªå ŽåããããŸãã
ç§ã¯ããªãã®åé¡ã解決ããããã«ãããè©Šã¿ãã®ã§ã建èšçãªãŸãŸã«ããŸãããã è²¢ç®ããŠåé²ãããããã解決çãæã¡æããæ¹ãåžžã«ç°¡åã§ãã
@JosephSilberããªãã¯ãªã©ãã¯ã¹ããå¿ èŠããããŸãã ããšãã§ããªãããšããã®ã¯åŒ·ãèšèã§ãã
ããã«ã¡ã¯ããã³ãã¬ãŒãã®ä¹±éããæžããããšã«ãã£ãŠåæ©ä»ãããããã£ã«ã¿ãŒãåé€ããŠããŸããããããšãæ·±å»ãªåœ±é¿ãåãŒããŠããŸãã
2.0ã®æè¡çãªå®è£
ïŒ ä»¥åã®èŠèŠå¹æã®åé¡ã§ããå Žåã¯ãèš±å¯ããã®ã¯ã©ãã§ãã
ä»ã®ããã«ãã£ã«ã¿ãªã³ã°ããŸãïŒãã ããæ°ããjavascriptãã©ãŒã ã䜿çšããŸãïŒ
ãã ããv-for = "i of list | orderByïŒ 'ââkey'ïŒ"ã®ããã«ãåŒããšã«1ã€ã ãã«å¶éããŸãïŒãã€ãèšå·ã¯1ã€ã ãïŒ
ããã«ããã2.0ã§ã®ãã£ã«ã¿ãŒåŠçãããç°¡åã§äºæž¬å¯èœã«ãªããèŠèŠçã«ãã£ããããŸãã
{{}}ã®ãã£ã«ã¿ãŒè§£æãããã®ã§ãä»ã®åŒã§ãããèš±å¯ããããšã¯çã«ããªã£ãŠããŸãã
ããã¯ãæ¢åã®ãã¹ãŠã®ãŠãŒã¹ã±ãŒã¹/é¢æ°ïŒåæ¹åãã£ã«ã¿ãªã³ã°ãv-forå
ã®ã¢ã€ãã ãªã©ïŒã«å¯Ÿå¿ããŸãã
è€æ°ã®ãã£ã«ã¿ãŒã®æ¢åã®äœ¿çšæ³ã¯ãææè
ã«ãã£ãŠç°¡åã«1ã€ã«ããŒãž/ã¢ããã°ã¬ãŒãã§ããŸãã
@tomsmithgroupããªããææ¡ããããšïŒããã³ãã以äžïŒã¯ã2.0ã§ãåŒãç¶ããµããŒããããããšã決å®ãããŸããã
@ yyx990803 ïŒ@ chrisvfritzã¯ãåæ¹åãã£ã«ã¿ãŒã«é¢ããããªãã®èããèããŠã¿ããã§ãã
@JosephSilberããã§ãããªããã»ã®ããããèšç®ãããããããã£ãã¡ã¯ããªã§ã¯ãå®åçãªãã®ãããããŸããïŒ
import currenciesFactory from 'some-computed-currencies-factory'
import products from 'products-stub'
new Vue({
el: 'body',
data: { products },
components: {
product: {
props: ['product'],
computed: currenciesFactory(['price', 'shipping', 'handling', 'discount'])
}
}
})
å人çã«ã¯ããã®äŸã®ãã¡ã¯ããªã¯äœæããŸããããããã®åããããã£ã¯å®éã«ã¯åå¥ã®é¢å¿äºã§ãããçŸæç¹ã§ã¯åãããã«ããèŠããªãããã§ãã ãã£ã«ã¿ãåé€ãããšããã®1ã€ã®ã³ã³ããŒãã³ããã©ãã»ã©è€éã§ãã£ãããã¯ããã«æ確ã«ãªããŸãã ããã¯ããªããå®åæãšããŠèŠãŠãããã®ã§ãã
ãããŠããããã³ã³ããŒãã³ãã_ååšãã_çç±ã®å€§ããªçç±ã§ãã è€éãã管çå¯èœãªæžå¿µã«åå²ããããšã ã³ã³ããŒãã³ããèŠããšãã³ã³ããŒãã³ããå®è¡ããŠãããã¹ãŠã®ãã®ãäœæ¥ã¡ã¢ãªãŒã«ç°¡åã«åãŸãå¿ èŠããããŸããããããªããšãéçºãã¯ããã«é ããªãããšã©ãŒãçºçãããããªããŸãã ãã£ã«ã¿ã®æ§æã®èåŸã«è€éããé ããŠãããã®è€éãã¯åãé€ãããŸããã
ãããå®èšŒããããã«ãåé¡ãå®éã®å€åããèŠä»¶ãæºãããŠããå Žåã«äœãèµ·ããããèŠãŠã¿ãŸããããå²åŒãäŸ¡æ Œ+éæ+åŠçããã倧ãããªãããšãèš±å¯ããªããšæ±ºå®ãããšããŸãã ãŸãã¯ãåãæ±ãã¯Xéãè¶ ããŠã¯ãªããŸããã ãŸãã¯ãå²åŒãã£ãŒã«ãã¯é貚ã§ã¯ãªãããŒã»ã³ããŒãžã«ããå¿ èŠããããŸãã ãŸãã¯ãåèšãäžå®é¡ãè¶ ããå Žåã¯ãæå°å²åŒãèªåçã«é©çšãããŸãã
è¿œå ã®ãªãã·ã§ã³ãšæ¡ä»¶ä»ãããžãã¯ã䜿çšããŠããã£ã«ã¿ãŒãããè€éã«ããããªããããããŸããã ãã£ã«ã¿ã®APIãšå éšããžãã¯ãæŽæ°ãããšãã¯ãå€æŽããã£ã«ã¿ãæ¶è²»ããä»ã®äœãã«ã©ã®ããã«åœ±é¿ããããèããå¿ èŠããããŸãããããå ±æãã£ã«ã¿ã®å Žåã¯ãçŸåšã®ã³ã³ããŒãã³ãã®å€éšã§ãå¯èœã§ãã ãã®ãããã¢ããªã«å€æŽãå ããããšã¯å°é£ãæãå§ããç¶æ³ã«ãããŸãã ãããŠãããã¯ãã¹ãŠãå ±æã®2ã€ã®ãã£ã«ã¿ãŒã«ãããå éšã³ã³ããŒãã³ãã®ç¶æ ãã³ã³ããŒãã³ãã®å€éšã«å§ä»»ããã³ã³ããŒãã³ãã®å¢çã«éåããçµåãå¢ãããã³ã³ããŒãã³ãã§äœæ¥ãããã³ã«èæ ®ããå¿ èŠã®ããè€éããé ãããšãã§ããããã§ãã
åå¥ã«å®çŸ©ãããèšç®ããããã£ãŸãã¯ãã€ã³ããããå°éå ·ã䜿çšããŠãç©äºãè€æ°ã®åå¥ã«è€éã§ãªãã³ã³ããŒãã³ãã«åå²ããããšã«ãããå€åããèŠä»¶ã«åãããŠ1è¡ãæŽæ°ããããšããããããŸãã è¿œå ã®ãªãã·ã§ã³ãæ¡ä»¶ã¯ãããŸããã ã¹ã±ãŒãªã³ã°ã®è€éããæºããããã®ãªãã¡ã¯ã¿ãªã³ã°ã¯ãããŸããã ã³ã³ããŒãã³ãã®å€åŽããŸãã¯ãã®åäžã®ããããã£ã®å€åŽã§ãããäœãèããå¿ èŠã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³ã¯æåããäœæããããã®ã§ãããä»ã§ãç°¡åã«èããŠæŽæ°ã§ããŸãã
ãã®å Žåããã£ã«ã¿ãŒãæåã«é åçãªãã®ã«ããŠããã®ã¯ãè€è£œã®æ²»çæ³ãšããŠæãå±ããããããšã ãšæããŸãã ãããããããå¶çºçã§ããå Žåãè€è£œã¯å®åçã§ã¯ãããŸããïŒã€ãŸããå®éã®åé¡ãå¿ ç¶çã«çºçãå§ããåã«ãã³ãŒãã¯ããŸããŸåãã§ãïŒã
ãããŠãç§ã¯ããããµã³ãã£ã¡ãããããè¯ãããããšã¯ã§ããŸããïŒ
è€è£œã¯ééã£ãæœè±¡åãããã¯ããã«å®äŸ¡ã§ã
@chrisvfritzãã£ã«ã¿ã¯ãããžãã¹èŠä»¶ãšã¯ãŸã£ããé¢ä¿ãããŸããã ãã£ã«ã¿ã¯ããŒã¿ããã©ãŒãããããã ãã§ãã ããã§ãããŸãã 圌ãã¯ããããããªãæ¹æ³ã圢ã圢ã§ãæäœããŸããã filter="currency"
ã¯ãæŠå¿µçã«ã¯number
ãã©ã¡ãŒã¿ãŒãšåãã§ãã ããžãã¹èŠä»¶ã¯ãæããã«ãã£ã«ã¿ãŒã§åŠçãããã¹ãã§ã¯ãããŸããã
å²åŒãäŸ¡æ Œ+éæ+ææ°æããã倧ãããªããªãããã«ããå¿ èŠããããšå€æãããšããŸãã ãŸãã¯ãåãæ±ãã¯Xéãè¶ ããŠã¯ãªããŸããã
次ã«ãé©åãªæ€èšŒã¢ãžã¥ãŒã«ãà la vue-validator
ã䜿çšããŸãã é貚ãã£ã«ã¿ãŒã¯ãåºæ¬çãªå€ã衚瀺ããã ãã§ãé¢ä¿ãªããã®ãŸãŸæ®ããŸãã
å²åŒãã£ãŒã«ãã¯ãé貚ã§ã¯ãªãããŒã»ã³ããŒãžã«ããå¿ èŠããããŸãã
ãããŠæããã«ãã®ã¿ã€ãã¯ãã¯ãé貚ã§ã¯ãããŸããã ãŠãŒã¶ãŒåã®èŠä»¶ãå€æŽããããšãã«type="text"
ãtype="email"
ã«äº€æããå Žåãšåãã§ãã ãŸãã¯ããã£ãŒã«ããæ°å€ã§ãªããªã£ããšãã«number
ãã©ã¡ãŒã¿ãåé€ããå Žåã§ãã
åèšãäžå®é¡ãè¶ ããå Žåã¯ãæå°å²åŒãèªåçã«é©çšãããŸãã
ãã®å Žåããæå°å€ãé©çšãããŸãããé貚ãã£ã«ã¿ãŒã¯ãã®ãŸãŸæ®ããŸãã ããã§ããé貚ãšããŠè¡šç€ºããå¿ èŠããããŸãã
ãã£ã«ã¿ã®APIãšå éšããžãã¯ãæŽæ°ãããšãã¯ãå€æŽããã£ã«ã¿ãæ¶è²»ããä»ã®äœãã«ã©ã®ããã«åœ±é¿ããããèããå¿ èŠããããŸã[...] 2-ãã£ã«ã¿ã«ãããå éšã³ã³ããŒãã³ãã®ç¶æ ãã³ã³ããŒãã³ãã®å€éšã«å§ä»»ã§ããŸã
ããããããžãã¯ãç¶æ
ããã£ã«ã¿ãŒèªäœã«å
¥ããããšã¯_決ããŠ_ãããŸããã ãã£ã«ã¿ã¯ãå€ããã©ãŒãããããããã®ã¹ãçé¢æ°ã§ãã çæ³çã«ã¯ãVMã®ã³ã³ããã¹ãã§å®è¡ããããšãããã¹ãã§ã¯ãããŸããã è¿œå ã®ããŒã¿ããã«ããããã®this
ããªãã¯ãã§ãã
è€è£œã¯ééã£ãæœè±¡åãããã¯ããã«å®äŸ¡ã§ã
...ããªããèšã£ãããã«ãããªããããŸããŸåãã§ããã³ãŒããæœè±¡åããŠãããšãã äžæ¹ããã£ã«ã¿ãŒã¯ãå€ããã©ãŒãããããåçŽãªã¹ãçé¢æ°ã§ãã ãããã¯ãŸã£ããæœè±¡åã§ã¯ãããŸããã
tl; drãã£ã«ã¿ãŒã¯æœè±¡åã§ã¯ãªããæ瀺çãªããžãã¹èŠä»¶ã®ä»£ããã«ã¯ãªããŸããã ãã£ã«ã¿ã«å
éšããžãã¯ãå«ãŸããããšã¯ãªããå¿
èŠã«ãªãããšããããŸããã ãããã¯ãæŠå¿µçã«ã¯HTMLã®type
å±æ§ãšv-model
ã®number
ãã©ã¡ãŒã¿ãŒã«äŒŒãŠããŸãã
åæ¹åãã£ã«ã¿ãŒã¯ç¢ºãã«æœè±¡åã§ãã v-model
åæ¹åãã£ã«ã¿ãŒã®çŸåšã®åäœã¯ãå
éšã«å€ãã®éæ³ãé ããŸããå
·äœçã«ã¯ãå
¥åã®DOMå€ãäžæçã«åºã«ãªãã¢ãã«ãšåæãããã次ã®å Žåã«ã®ã¿ãåæãããŸãããã£ãŒã«ãããŒãããŸãã ãšããã§ã @ JosephSilberãã®åäœã¯ãç¹ã«ããªãã®èŠæ±ã®ããã«å®è£
ãããã®ã§ããªãããªããããã«ã€ããŠãšãŠã匷ãæããŠããã®ãç解ã§ããŸãã
ãã ããåæ¹åãã£ã«ã¿ãŒã§ç§ãç®ã«ããæ倧ã®åé¡ã¯ãåºã«ãªãããžãã¯ããã©ãã¯ããã¯ã¹ã§ããããŠãŒã¶ãŒãæ©èœèŠæ±ãè¡ã以å€ã«ãããããã«ã«ã¹ã¿ãã€ãºããæ¹æ³ããªãããšã§ãã ç§ã«ãšã£ãŠãããè¯ããªãã·ã§ã³ã¯ããã®ãããªåäœãèªåã§å®è£ ããããã®é©åãªãã«ãã£ã³ã°ãããã¯ãæäŸããããšã§ãã ãããŠãããã2.0ã§ã©ã®ããã«å¯èœã§ãããããèŠãããŸãããã
https://jsfiddle.net/yyx990803/5bnu6xb6/
ããã«ãçŸåšã®åæ¹åãã£ã«ã¿ãŒã®ãéåæã«ãªããŸã§ãŒããããåäœãå®è£
ããåºæ¬ã®CustomInput
ã³ã³ããŒãã³ãããããŸãã 2.0ã§ã®å€æŽã«ãããã³ã³ããŒãã³ããvalue
ãããããåãå
¥ãã input
ã€ãã³ããæŸåºããéããã«ã¹ã¿ã ã³ã³ããŒãã³ãã§v-model
ãçŽæ¥äœ¿çšã§ããŸãã ããã«ã change
ã€ãã³ãã®å€ããã©ãŒãããããŸããããã¯ãçŸåšãåæ¹åãã£ã«ã¿ãŒã§ã¯äžå¯èœã§ãã ãã®ã³ã³ããŒãã³ããããã«åŸ®èª¿æŽããŠããã¬ãŒã ã¯ãŒã¯ã«ããåæ¹åãã£ã«ã¿ãŒã®å®è£
æ¹æ³ã«çžãããããšãªããå¿
èŠãªåäœãå®çŸã§ããŸãã
åºæ¬ã³ã³ããŒãã³ãã¯è§£æ/ãã©ãŒãããããžãã¯ãå®è£
ããŠããŸããã parse
ããã³format
ã¡ãœããã䜿çšããŠæ¡åŒµããç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«åãããã«ã¹ã¿ã å
¥åã³ã³ããŒãã³ããååŸããŸãã ãã®å Žåã CurrencyInput
ã³ã³ããŒãã³ãã§ãã
以åã®éæ³ã®åäœãèªåã§å®è£ ããŠãããããåºæ¬ã³ã³ããŒãã³ãã¯åæ¹åãã£ã«ã¿ãŒãããè€éã§ãã ãã ãããã®ã³ã³ããŒãã³ããå®çŸ©ããå¿ èŠãããã®ã¯1åã ãã§ãã ãã®èŠè¿ããšããŠãåŸã§å€æŽãããå Žåã«åããŠãã©ã®ããã«åäœããããå®å šã«å¶åŸ¡ã§ããŸãã ããã¯äŸ¡å€ã®ãããã¬ãŒããªãã ãšæããŸãã
ããã¯ãåå©çšæ§ã®ããã®çµ±äžãããæœè±¡åã§ãããã»ãšãã©ã®å¶åŸ¡ãå¯èœã§ãããããã³ã³ããŒãã³ãã«ã€ããŠããæ·±ãèããå¿
èŠãããäŸã§ãã 2.0 select2ã®äŸãåç
§ããŠãã ããã以åã¯1.0ã§ããã¯ãã£ã¬ã¯ãã£ããšããŠå®è£
ãããŠããŸããããçŸåšã¯åãv-model
ã€ã³ã¿ãŒãã§ã€ã¹ãæã€ã³ã³ããŒãã³ãã«ãªã£ãŠããŸãã
ç§ã«ãšã£ãŠãããè¯ããªãã·ã§ã³ã¯ããã®ãããªåäœãèªåã§å®è£ ããããã®é©åãªãã«ãã£ã³ã°ãããã¯ãæäŸããããšã§ãã
ããã¯çŽ æŽããããééããªãVueãå¿ èŠãšããŠãããã®ã§ããããããèªã¿ããã£ãã®ã§ãã
ç§ã«ãšã£ãŠãããè¯ããªãã·ã§ã³ã¯ãVueã§éå§ããããã®é©åãªãã«ãã£ã³ã°ãããã¯ãæäŸããæ°ãããã£ã«ã¿ãªã³ã°åäœã§Vueãèªåã§æ¡åŒµããããšã§ãã
èšãæããã°ãéè²šå ¥åã³ã³ããŒãã³ããšä»ã®å€ãã®ããã©ã«ãã®ãã£ã«ã¿ãªã³ã°ã³ã³ããŒãã³ããVueã®äžéšã«ããããšã¯ã§ããŸããã§ãããïŒ ãªããªãã誰ãããã€ãé貚ã䜿ãããã§ãããïŒ åãä»äºãäœåºŠãç¹°ãè¿ãã®ã¯ãªãä»ã®äººã«ä»»ããã®ã§ããïŒ é貚ã®æžåŒèšå®ã¯ãVueç¬èªã®ãã£ã«ã¿ãªã³ã°ã³ã³ããŒãã³ãããŒã«ããã°ã®äžéšã«ããã®ã«ååãªæšæºã§ãããä»ã®äººãç¬èªã®ãã£ã«ã¿ãªã³ã°ã³ã³ããŒãã³ããäœæããæ¹æ³ãåŠã¶ããã®åªããåºæ¬çãªäŸã§ãã
ãããŠ.....å®æããéè²šå ¥åã³ã³ããŒãã³ãã§ãããšããäŸããæ¬ èœããŠããã®ã¯1ã€ã ãã§ãããããã¯i18næ©èœã§ãããVueã«ãå¿ èŠã§ãããšç§ã¯ä¿¡ããŠããŸãã é貚çªå·ã®ãã©ãŒãããã¯ããã®äººïŒèŠèŽè ïŒãéžæãããã±ãŒã«ã«å¿ããŠå€æŽããå¿ èŠããããŸãã ã€ãŸãããã±ãŒã«ããŒã¿ãæå³ããŸãã ãDE_deãã¯ããã®ãã±ãŒã«ãšã¯ã¹ãããŒã©ãŒïŒæšæºã«ç±æ¥ïŒã«è¡šç€ºãããããã«é貚ããã³ãã®ä»ã®æ°å€ããã©ãŒãããããŸãã ãããVueã«è¿œå ãããšãVueã«çµã¿èŸŒãŸããåªããé貚/æ°å€ãã©ãŒãããã³ã³ããŒãã³ãã·ã¹ãã ãåŸãããŸããVueã䜿çšããä»ã®äœå人ãã®éçºè ã¯ãèªåã§äœæããå¿ èŠã¯ãªããVueãå ¥æãããšãã«ãã®å Žã§äœ¿çšã§ããŸãã ã ããã«ãããVueã¯åŒ·åãªãã³ãã¬ãŒãã·ã¹ãã ã«ãªããŸãã
ãã®ãi18nãã©ãŒãããã³ã³ããŒãã³ããã1.0ã®ããã«ãã£ã«ã¿ãŒãšããŠé£éçã«äœ¿çšã§ããªãå Žåã¯ããã©ã°ã€ã³å¯èœã§ããå¿
èŠããããŸãã ãããããã§ãããã ãããAureliaãè¡ã£ãŠããããšã§ãããTwigããã®æ¡åŒµæ©èœã䜿ã£ãŠè¡ã£ãŠããããšã§ãã é貚å
¥åã³ã³ããŒãã³ãã¯ãåŒãç¶ã<currency-input>
ã§ããå¯èœæ§ããããŸãã
ãã®i18nããã³ãã®ä»ã®æšæºãã³ãã¬ãŒããã£ã«ã¿ãŒã¯ãå¿ èŠããªããã°ãä»ã®äººãåžžã«åçŸããå¿ èŠã®ãªããã®ã§ããå¿ èŠããããŸãã ãã®ãããªãã©ã°ã€ã³ã®äœãæ¹ãæããŠããã ããã°ãi18âânãã©ã°ã€ã³ããå±ãããŸãã ç§ã¯ããå šäœã«èå³ããããŸãïŒïŒsmileïŒ
ã¹ã³ãã
ãªããªãã誰ãããã€ãé貚ã䜿ãããã§ãããïŒ
ããã§ã¯ãããŸããã ç§ã¯ãå®éã«ããã䜿çšããããšã¯ãããŸãã:)åãããšãä»ã®ãã¹ãŠã®çµã¿èŸŒã¿ãã£ã«ã¿ãŒã«ãåœãŠã¯ãŸããŸã-ä»ã®ãã£ã«ã¿ãŒã圹ã«ç«ããªããšãã«ããããã®ããã€ãã¯ç§ãã¡ã®äžéšã«åœ¹ç«ã¡ãŸãã ãã®ãããã¯ã«åãçµãã§ããéãã»ãšãã©ã®å Žåãçµã¿èŸŒã¿ã®ãã£ã«ã¿ãŒã䜿çšãããã£ãã®ã§ããããšã«ããç¬èªã®ããŒãžã§ã³ãäœæããŠãçµã¿èŸŒã¿ã®ããŒãžã§ã³ã®ãããã³ãŒããã¬ã³ããªã³ã°ããããšã«ãªããŸããã
i18næ©èœãVueã«ãå¿ èŠã ãšæããŸãã
ããããŸããéåžžã«è°è«ã®äœå°ããããŸãã å æ¬çãªi18nãµããŒãã¯ããªãè€éã«ãªãå¯èœæ§ããããIMOã¯Vueã«å±ããŠããŸãããç¹ã«ãã»ãšãã©ã®ãŠãŒã¶ãŒããšã«ãããããå¿ èŠãšããªãå Žåã¯ããã§ãã
ããã§ããããæèµ·ããããšæããŸããVueãšå¥ã®ãã³ãã¬ãŒã/ãã¬ãŒã ã¯ãŒã¯ãæ¯èŒãããã³ã«ãèŠããŠããã¹ãéèŠãªããšã1ã€ãããŸããDjango/ Laravel / Twigãšã¯ç°ãªããVueã¯æ¬è³ªçã«ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã§ãããããã§ããã ã軜éã«ããå¿ èŠããããŸãã ãããããæçšæ§ããŸãã¯ããšã¬ã¬ã³ã¹ãã®ããã ãã«ãæ©èœããšããŠãŒãã£ãªãã£ããè¿œå ããã®ã§ã¯ãªãããã¡ãããã¹ãŠã®_core_æ©èœãä¿æããªãããååã«åçŽã«ä¿ã€æ¹ãçã«ããªã£ãŠããŸãã ã³ã¢æ©èœä»¥å€ã®ãã®ãå¿ èŠãªå Žåã¯ããã©ã°ã€ã³ã䜿çšããããç¬èªã®ãã©ã°ã€ã³ãéçºããããšããå§ãããŸãã ãããäŸãšããŠåãäžããŸããäžè¬çã«èŠãããSPAã®å Žåãi18n / currencyã¯ã«ãŒã¿ãŒãç¶æ 管çè ãããéèŠã§ããïŒ ããã¯æããŸããã ããã§ããvue-routerãšvuexã¯Vueã«å±ããŠããŸããããç¬èªã®ãªããžããªãæã£ãŠããŸãã èšãæããã°ã Vueã¯ããã°ã¬ãã·ãã§ãã
ãã®ãããªãã©ã°ã€ã³ã®äœãæ¹ãæããŠããã ããã°ãi18âânãã©ã°ã€ã³ããå±ãããŸãã ç§ã¯ããå šäœã«èå³ããããŸãïŒ
ããã¯ããè³¢æãªã¢ãããŒãã ãšæããŸãããé¢å¿ããå¯ãããã ãããããšãããããŸã:)
äžéšã®é åã§i18nã䜿çšããå¿
èŠãããå ŽåïŒïŒçŸããã®ããã«ãã³ãŒãã調ã¹ãŠãããã€ãã®ååãæåã§å€æŽã§ãããšæããŸãã
äŸïŒã»ãã®æ°æéåãç§ã¯butstrap.datepikkerãåããŸãã-ãã®ãããªå¯èœæ§ããããšããäºå®ã«ãããããããç§ã¯æ¥ç¶ããŸãããi18nã ã¯ã€ãã¯60ç§ã ãæåã§ãææ¥ãšæã®ååã眮ãæããŸããããã¹ãŠ-OKïŒ ïŒïŒ
@ phanan-ããªãã®è°è«ã¯ç§ãããã©ã°ã€ã³ãã«èšåããçç±ã§ãã ç§ã¯åæããŸãã誰ããé貚ãi18næ©èœãæãã§ããããã§ã¯ãªããã¢ããªã軜ãä¿ã€ããšãã§ããªããã®ããããŸããããã³ãã¬ãŒãã·ã¹ãã ãšããŠãVueããã®ãããªæšæºæ©èœãå©çšã§ããã¯ãã§ãïŒããã¯ç§ã®å人çãªæèŠã§ãïŒãããã ããã«éèŠãªããšã«ããããŠç§ã®æžå¿µã¯ã誰ããi18nãŸãã¯é貚ãã£ã«ã¿ãŒã³ã³ããŒãã³ããã€ãŒã«ãåçºæããªããã°ãªããªããšããããšã§ã¯ãªããšããããšã§ãã èšãæããã°ãVue-RouterãšVuexãVueã«è¿œå ã§ããããã«ãé貚ãi18nãªã©ã®æšæºãã£ã«ã¿ãŒãå€æ°ããå¯èœæ§ããããŸãã
ããããããŠèå³æ·±ãããšã«ãAngularã«ã¯i18nãçµã¿èŸŒãŸããŠããããã§ãã
https://docs.angularjs.org/guide/i18n
Angularã¯ãæ¥ä»ãæ°å€ãé貚ã®ãã£ã«ã¿ãŒã§i18n / l10nããµããŒãããŠããŸãã
EmberãšReactã¯ããéçºè
ã®äžçã«èªåãã¡ã§ããããŠããšããéãé²ãã ããã§ãã
é¢çœããããªã
https://www.youtube.com/watch?v=Sla-DkvmIHY
ãã¶ãVueã¯FormatJSãžã®çµ±åã ããå¿ èŠã§ããïŒ VueIntlïŒ ïŒç¬é¡ïŒ
ç·šéïŒããã¯ããã»ã©åçŽãªããšã§ã¯ãããŸãããïŒ https://github.com/learningequality/vue-intl/blob/master/index.js
ã¹ã³ãã
Angularã«ã¯i18nãçµã¿èŸŒãŸããŠããããã§ãã
Angularã«ã¯ng-routerãä»å±ããŠããŸãããããã¯ç§ãèãããšããã«ãããšãng-communityã«ãã£ãŠé¿ããããŠui-routerãæ¡çšãããŠããŸãã
ããŠãAngularããŒã ãng-routerãui-routerã«çœ®ãæãããšãé倧ãªå€æŽãšèŠçãçºçããŸãã
圌ããng-routerãæ¹åããããšãããšãããè¯ããœãªã¥ãŒã·ã§ã³ïŒui-routerïŒããã§ã«ååšãããããæéãç¡é§ã«ããŠããŸãã
Vueãã³ã¢ã§i18nãé貚ãªã©ããµããŒããå§ããå Žåãåãç¶æ³ãvueã«ãèµ·ãããŸãã
çµã¿èŸŒã¿ã®ãã£ã«ã¿ãŒã¯äŸ¿å©ã ãšæããŸããããã®ç¹ã§ã¯vuejsããŒã ã«åæããŸãã
次ã«ããã£ã«ã¿ãŒãVueã³ã¢ã«ãªãããšã«åæããŸãã ç§ã¯å®éã«ã¯ã³ã³ããŒãã³ãåã®ãã¡ã³ã§ããããŸãã ããããVueã¯ãã£ã«ã¿ãŒãã³ã¢ãã©ã°ã€ã³ãšããŠãæäŸã§ããŸããã§ãããïŒ VuexãVue-Routerã®ããã«ïŒ
ã¹ã³ãã
ããããVueã¯ãã£ã«ã¿ãŒãã³ã¢ãã©ã°ã€ã³ãšããŠãæäŸã§ããŸããã§ãããïŒ VuexãVue-Routerã®ããã«ïŒ
ããã¯ãŸãã«@ blake-newmanã以åã«å ±æãããã®ã§ãã
ããã«ã¡ã¯ïŒæçµæ±ºå®ããŒãžã«ã¯ãããã¹ãã®ãã£ã«ã¿ãŒã®ã¿ãèš±å¯ããããšã瀺ãããŠããŸã
衚瀺{{}}ïŒv-textïŒ
v-for = "item of list | sortBy"ã®ãããªä»ã®åŒã§ã¯ãããŸãã
ãããšãç§ã¯èª€è§£ããŸãããïŒ
ç§ãæå³ããã®ã¯ã1.0ã®ããã«ãã£ã«ã¿ãŒã䜿ãç¶ããããšã§ãããããã£ã«ã¿ãŒã1ã€ã ãå¶éããŸãã
åŒããš
2016幎5æ1æ¥ååŸ10æ24åã PhanAnnotifications @ github.comã¯æ¬¡ã®ããã«æžããŠããŸãã
@tomsmithgrouphttps ïŒ//github.com/tomsmithgroupããªããææ¡ããããš
ïŒãããŠãã以äžïŒã決å®ãããŸãã
https://github.com/vuejs/vue/issues/2756#issuecomment -215868244 to
2.0ã§ãåŒãç¶ããµããŒããããŸããâ
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/vuejs/vue/issues/2756#issuecomment -216093937
@ yyx990803è¿ä¿¡ãã
@fnlctrlããã¯æ£ããã§ãã ç¬èªã®ã³ã³ããŒãã³ããäœæããã ãã§ãã
å°ã話é¡ãå€ããŸãããããã®åæ¹åãã£ã«ã¿ãŒã¯ãæ¬çªç°å¢ã§æ¬åœã«åœ¹ç«ã€ã®ã§ããããã
ã€ãŸãããŠãŒã¶ãŒãå
¥åã«äœããå
¥åãããŒãããåŸã«ãããåãã©ãŒãããã§ããããã«ããããšã¯æ¬åœã«å€§äžå€«ã§ããïŒ
ç§ã®ããžãã¹ããŒã ã¯åžžã«ããã®ããã«åäœããããã«å
¥åãèŠæ±ããŸããééã£ããã®ãå
¥åããããšã¯ã§ããŸããã ãããã£ãŠã Vue
ã䜿çšããå Žåã§ããå³æã®åæ¹åå€æŽãéæšå¥šã«ãªã£ãããããã®ç®çã§jquery.inputmaskã䜿çšããŸãïŒããã¯ç§ãæ¬åœã«èŠéããŠãããã®ã§ã...ïŒ
ã€ãŸãããããã®åæ¹åãã£ã«ã¿ãŒã«æ¬åœã«åé¡ãããã®ã§ããããããããšã人ã
ããããèããããŠããã®ã§ããããã :)
@fullfsåæ¹åãã£ã«ã¿ãŒã¯ã䟿å®äžãæ¬çªã¢ããªïŒå€ãã®<input>
sïŒã§åºã䜿çšãããŠããŸãããä»ã®ãšãããå€ã1åã ããã£ã«ã¿ãŒããã®ã§ã¯ãªãããªã¢ã«ã¿ã€ã ã§ãã£ã«ã¿ãŒããã®ã¯ãªãã§ããããµãŒããŒã«POSTãããŸãããïŒ ã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°ã«ã¯å°ãæéãããããŸãããèŠéãããšã¯ãªããšæããŸãïŒD
UIã楜芳çã«æŽæ°ããå ŽåïŒç¹ã«ã¢ãã€ã«ã®å Žåãä»æ¥ã®IMHOã®æšæºã§ãïŒãå ¥åãæäŸãããæç¹ã§å®éã«é©åã«ãã©ãŒããããããå ¥åãå¿ èŠã«ãªããŸãã
ã¹ã³ãã
2ãŠã§ã€ãã£ã«ã¿ãŒã¯vueã§æ¬åœã«çŽ æŽãããã§ãã ãã£ã«ã¿ã®æç¡ã«ãããããããã€ã§ãç¬èªã®ã«ã¹ã¿ãã€ãºãããã³ã³ããŒãã³ããäœæã§ããŸãããããã«ã¯æéãããããŸãã ã©ã€ãã©ãªã¯æè»æ§ãæäŸããã ãã§ãªããç©äºãè¡ãããã®ããéããŠäŸ¿å©ãªæ¹æ³ãæäŸããå¿ èŠããããŸãã 2ãŠã§ã€ãã£ã«ã¿ãŒãå«ããããšã§ãå¿ èŠã«å¿ããŠç¬èªã®ã³ã³ããŒãã³ããäœæããããšã劚ããããšã¯ãããŸããããæ¢åã®æ©èœãããŒãºã«åã£ãŠããå Žåã¯ãã»ãšãã©ã®å Žåãéçºãè¿ éåã§ããŸãã ããã¯åžžã«APIã®è¡šé¢ãšå©äŸ¿æ§ã®éã®åŠ¥åç¹ã§ãã ãã©ã³ã¹ãèŠã€ããå¿ èŠããããVueã«ã¯ãã§ã«çŽ æŽããããã©ã³ã¹ããããŸãã ãã£ã«ã¿ãåãé€ãããšã¯ããã©ã³ã¹ã®ãšããé©åãªãã€ã³ãããäžæ©åŸéããŠããããã§ãã ã©ã€ãã©ãªã¯å°ãããªããŸãããããã䜿çšãããã¹ãŠã®ãããžã§ã¯ãã®ã³ãŒãããŒã¹ãšãã€ã©ãŒãã¬ãŒãã¯å€§ãããªããŸãã
ãã£ã«ã¿ãå®éã«éæšå¥šã«ãªãå Žåã¯ãv-modelãã£ã¬ã¯ãã£ãã®ããŒãµãŒãšãã©ãŒããã¿ãŒãç°¡åã«æå®ã§ãã代æ¿æ段ãæäŸãããšããã§ãããã ãã£ã«ã¿ã䜿çšãããšãæäŸãããŠããäŸ@ yyx990803ã®ãã®éšåã ããèšè¿°ã§ããŸãã
const CurrencyInput = CustomInput.extend({
methods: {
parse(val) {
var number = +val.replace(/[^\d.]/g, '')
return isNaN(number) ? 0 : number
},
format(val) {
return '$' + Number(val).toFixed(2)
}
}
})
åæ¹åãã£ã«ã¿ãŒããªããã°ã1ã€ãæžãå¿ èŠããããŸã
const CustomInput = Vue.extend({
template: `
<input type="text"
@focus="onFocus"
@blur="onBlur"
@input="onInput"
@change="setDisplayValue">
`,
props: ['value'],
watch: {
value() {
if (!this.focused) {
this.setDisplayValue()
}
}
},
ready() {
this.setDisplayValue()
},
methods: {
onInput() {
this.$emit('input', {
target: {
value: this.parse(this.$el.value)
}
})
},
onFocus() {
this.focused = true
},
onBlur() {
this.focused = false
this.setDisplayValue()
},
setDisplayValue() {
this.$el.value = this.format(this.value)
}
}
})
ãããã£ãŠãæè»æ§ãåäžããŸãããåãçµæãåŸãããã®ã³ãŒããå¢ããŸãã
@ aristidesfl-ãã£ã«ã¿ãŒã¯éæšå¥šã§ã¯ãããŸããã éšåçã«æŠãã«åã¡ãŸããã ç¬ïŒ ãããã¯ãããã¹ãè£éã§ã®ã¿äœ¿çšãããããã«å¶éãããŸãã ãããåç §ããŠãã ããïŒ https ïŒ//github.com/vuejs/vue/issues/2873
ã¹ã³ãã
ããããšã@smolinari ã ç§ã¯ç¹ã«2ãŠã§ã€ãã£ã«ã¿ãŒã«ã€ããŠèšåããŠããŸããã
æ»ã£ãŠæ¥ãŠãã ããïŒ ç§ãã¡ã¯ãããå¿ èŠã§ããç§ã¯ããªããèšã£ãããšãã¹ãŠã«åæããŸãã ããããããã¯ãšãŠãç°¡åã§ããç§ãã¡ã¯æ æ°ãªãŠãŒã¶ãŒã§ããç§ãã¡ã¯ãã æ æ°ã§ç°¡åãªæ¹æ³ãæãã§ããŸãã ããŒãã¢ã©ã€ãã®ããã«ã
ã«ã¹ã¿ã vã¢ãã«ä¿®é£Ÿåãè¿œå ããæ¹æ³ãããã¯ãã§ãïŒhttp://rc.vuejs.org/guide/forms.html#ModifiersïŒ
ãããã¯åæ¹åãã£ã«ã¿ãŒã®ããã«æ©èœããŸãã
@ecmelã¯åæããŸããã ãããé²ãã¹ãéã§ãã
æ©èœãªã¯ãšã¹ãã®åé¡ãéããŠãã:)
@ecmelåæ§ã®ã¢ã€ãã¢ã¯ãå修食åãšããŠèª¬æãããŠããŸãããããã§èª¬æãããŠããŸãã
@rpkilbyãã®è°è«ãéããããŠããŸãããã«ã¹ã¿ã vã¢ãã«ä¿®é£Ÿåçšã«æ°ããè°è«ãéãå¿ èŠããããããããŸããã
ãããè¡ãããšãã§ããªããªããŸããïŒ
<span :title="item.Modified | date('dd-mmmm-yyyy H:MM:ss')">{{item.Modified | date('dd-mmmm-yyyy')}}</span>
ãã£ã«ã¿ã{{ }}
ã«å¶éããã®ã¯å¥åŠã«æããŸããå±æ§ãã€ã³ãã£ã³ã°ã§ãã£ã«ã¿ã䜿çšãããå Žåãå€ãããïŒå°éå
·ãæž¡ããªãïŒãå±æ§ã§{{ }}
ã䜿çšã§ããªããªããŸããã ïŒïŒ
@LinusBorgãªãŒãã³https://github.com/vuejs/vue/issues/3666
ãã£ã«ã¿ã
{{ }}
ã«å¶éããã®ã¯å¥åŠã«æããŸããå±æ§ãã€ã³ãã£ã³ã°ã§ãã£ã«ã¿ã䜿çšãããå Žåãå€ãããïŒå°éå ·ãæž¡ããªãïŒãå±æ§ã§{{ }}
ã䜿çšã§ããªããªããŸããã ïŒïŒ
ãããã¯ãèšç®ãããããããã£ãšã¡ãœããã§ç°¡åã«çœ®ãæããããšãã§ããããåé€ãããŸããããAPIã¯ããå¶éãããŠãããçµæããã£ãã·ã¥ããå¯èœæ§ã¯ãããŸããã
ããïŒ
å ã®æ¬äŒŒã³ãŒãïŒ
<!-- method, suitable in v-if -->
<span :title=" date(item.Modified, 'dd-mmmm-yyyy H:MM:ss')>
<!-- computed prop, more suitable for single values -->
<span :title="formattedModified">
<script>
computed: {
formattedModified () { return date(this.item.Modified, 'dd-mmmm-yyyy H:MM:ss') }
}
</script>
ç³ãèš³ãããŸããããç§ã¯ãæ°ãããã ãã§ãã
ãããããã£ã«ã¿ãŒããªãAngular 1ããæ¥ããšãæ¬åœã«å¥åŠã§çŽæã«åããŸãããã¹ãŠã®éçºè
ãç¬èªã®ãã£ã«ã¿ãŒã»ãããéçºããèšç®ããããšã³ããªãèªåã§èšå®ãããªã©ãçµã¿èŸŒã¿ãããåªããŠããã®ã¯ãªãã§ããïŒ
ãããŠãèŠçŽ å
ã®ãªããžã§ã¯ãã«ãã£ãŠãéåžžã«å€§ããªé
åããã£ã«ã¿ãªã³ã°ããããã®ãã¹ããã©ã¯ãã£ã¹ãšçŸåšèããããŠããããšã Angularã®å Žåãããã¯1è¡ã®ã³ãŒãã§ããã æ€çŽ¢å
¥åçšã«é
åããã£ã«ã¿ãªã³ã°ããããšã¯å¯èœã§ãããããã¯ãã¬ãŒã ã¯ãŒã¯ã®æ©èœã§ããã¯ãã®ãã¹ãŠã®éæ³ãå®è¡ããŸãã
ãããŠãéåžžã«å€§ããªé åããã£ã«ã¿ãªã³ã°ããããã®ãã¹ããã©ã¯ãã£ã¹ãšçŸåšèããããŠããããš
æ¬åœã«å€§ããªé åãšã¯äœã§ããïŒ çè«çã«ã¯ãèšç®ãããããããã£ã¯ãã£ã«ã¿ãªã³ã°ã«ã圹ç«ã¡ãŸãã
https://jsfiddle.net/sat25z51/3/
ãã¹ãŠã®éçºè ã«ç¬èªã®ãã£ã«ã¿ãŒã®ã»ãããéçºãããèšç®ããããšã³ããªãèªåã§èšå®ãããªã©ããããçµã¿èŸŒããããåªããŠããã®ã¯ãªãã§ããïŒ
以åã¯åãããã«èããŠããŸãããïŒãããŠãªãã¹ã¬ãããå§ããã®ãïŒãåºæ¬çã«ãããã®çš®é¡ã®ãã£ã«ã¿ãŒãèªåã§äœæããã®ã¯ç°¡åãªããšã§ãããåéçºè ãæããã®ã¯ããããããããšãåŠã³ãŸãããã£ã«ã¿ïŒãŸãã¯èšç®ãããããããã£ïŒãšããŠããã£ã«ã¿ãçµã¿èŸŒãŸããŠããªãããšã¯ããã»ã©å€§ããªåé¡ã§ã¯ãªãããšã«æ°ã¥ããŸããã
ã¹ã³ãã
ç§ã®å ŽåãFirebaseããŒã¿ããŒã¹ã«ãã£ãŠæäŸãããjsonã®> 10.000è¡ã«çžåœããŸãã
ãªãããªãããã®ããã«èããæ©èœãåé€ããããšã決å®ããã®ããããããŸãããããã§ãéçºè
ã«ãšã£ãŠã¯ããªãé¢åã§ãã
ç§ã¯ãã£ãã«ãç§ã®ããŒã¿æ§é ãšäžèŽããããã«ãã©ãŒã¯ããŸããïŒ
https://jsfiddle.net/nw5yhLwv/
ã ããç§ã¯æã§ç§ã®ãªããžã§ã¯ãã®æååã®æ€çŽ¢ãã³ãŒãã£ã³ã°ããå¿
èŠããããŸããïŒ
ç§ã¯ããªãã®è³ªåãç解ããŠããŸããã ãããã ãã£ãã«ã¯ç§ãæçš¿ãããã®ã®ããã«èŠããŸãã
ã¹ã³ãã
èšç®ããããã£ã«ã¿ãŒãšãã£ã«ã¿ãŒ
ãã£ã«ã¿ã¯ãã¬ã³ããªã³ã°ããšã«èšç®ããïŒã¡ãœãããšåãããã«ïŒãèšç®ãããããããã£ã¯ç°¡åã«å®è¡ã§ããå¿ èŠãªå Žåã«ã®ã¿åèšç®ããããããããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãããã以å€ã®å Žåã¯ãçµæããã£ãã·ã¥ãããŸããã€ãŸããVueãé£ã¶ããšãã§ããŸãã
ããã äž¡æ¹ãããŸãã ð
ã¹ã³ãã
ãããç§ã¯ããã€ãã®ããããããŸããããããŠä»ç§ã¯ãããæã«å ¥ããŸãããããã¯çŽ æŽãããã³ã³ã»ããã§ãïŒ ð
ããã«ã€ããŠã®è°è«ã¯é·ãéçµãã£ãŠããã®ã§ãç§ã¯ä»ãã®ã¹ã¬ãããããã¯ããŸã-Vue 2.0ã¯æ°ã¶æéãªãªãŒã¹ãããŠããããã£ã«ã¿ãŒã®ããããã«é¢ããæ¹å€ã¯ãããããããŸããŸããã
ãã®ã¹ã¬ããã§ã®ãã以äžã®è°è«ã¯çç£çã§ã¯ãããŸããã 話ãåããå¿ èŠã ãšæããããããã¯ã«æ°ããè§åºŠãèŠãããå Žåã¯ãæ°ããåé¡ãéããŠãã ããã
æãåèã«ãªãã³ã¡ã³ã
æçµæ±ºå®ã¯æ¬¡ã®ãšããã§ãã
html {{ date | formatDate('YY-MM-DD') }}