【AngularJS】単数形・複数形をいい感じに扱う
6673 ワード
WHAT
たとえば,下記のようなメッセージの出し分けがしたい.
- 0いいねのとき →
0 Likes
- 1いいねのとき →
1 Like
- 2いいねのとき →
2 Likes
ng-pluralize
を利用する.
Example
細かい仕様は公式docを参照されたい.
Template
test.html
<button ng-click="ctrl.increment()">
<ng-pluralize count="ctrl.count" when="ctrl.messages">
</button>
-
ctrl.count
: クリック数が格納されている. -
ctrl.messages
:count
属性で指定した変数の値ごとにどんなメッセージを出すかが,オブジェクトで定義されている(template内に直接書くのもOK,書籍や公式docはそうしてる).
Directive
本稿ではDirectiveとして定義してある(深い意味は無い).
in CoffeeScript
test.coffee
class TestController
messages:
'0': 'Not yet clicked'
'1': '1 click!'
'other': '{} clicks!'
count: 0
increment: =>
@count++
class TestDirective
restrict: 'E'
controller: TestController
controllerAs: 'ctrl'
templateUrl: 'test.html'
angular.module('testApp', [])
.directive('test', -> new TestDirective())
in JavaScript
CoffeeScript読めない人向け.
test.js
angular.module('testApp', [])
.directive('test', function() {
return {
restrict: 'E',
controller: function () {
this.messages = {
'0': 'Not yet clicked',
'1': '1 click!',
'other': '{} clicks!'
};
this.count = 0;
this.increment = (function (_this) {
return function () {
_this.count++;
}
}(this));
},
controllerAs: 'ctrl',
templateUrl: 'test.html'
};
});
JavaScript版書くのすごい消耗した.
Reference
Author And Source
この問題について(【AngularJS】単数形・複数形をいい感じに扱う), 我々は、より多くの情報をここで見つけました https://qiita.com/izumin5210/items/f4e737830ed5988cb2f4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .