3 つのバインドされたイベントを持つ基本的な入力コントロールがあります。コントロールは年の値を表示します。各イベントで、コントロールはその値を Cookie に保存して、ページの更新時に現在の値が同じままになるようにする必要があります。
イベント:
onchange
それ自体のinput
(明らかに)input
増分の左にある矢印- 右への矢印はそれを減らします
これらすべてを JQuery で行う方法は知っていますが、このコントローラーを Angular でセットアップしようとしています。インクリメント/デクリメントするとコントロールはうまく機能しますが、ユーザーが手動で入力を編集すると、インクリメント/デクリメント機能は機能しません。私はまた、これがこのタイプのコントロールを構築するための非常に貧弱な方法であることを疑っています.以下は私の試みたコードです:
JS:
myApp.controller('TimeframeCtrl', ['$scope',
'$cookieStore',
function ($scope, $cookieStore) {
// If year cookie doesn't exist
if($cookieStore.get('year') == null) {
// Create year cookie
$cookieStore.put('year', 2014);
}
// Decrement year
$scope.prevYear = function() {
$scope.year = $scope.year - 1;
$cookieStore.put('year', $cookieStore.get('year') - 1);
}
// Increment year
$scope.nextYear = function() {
$scope.year = parseInt($scope.year) + 1;
$cookieStore.put('year', $cookieStore.get('year') + 1);
}
// User manually changes year
$scope.yearChange = function() {
// Not implemented
}
// Set timeframe control value
$scope.year = $cookieStore.get('year');
}]);
HTML:
<form class="navbar-form pull-left" ng-controller="TimeframeCtrl">
<i class="fa fa-angle-left" ng-click="prevYear()"></i>
<input class="form-control" type="text" value="{{year}}" placeholder="Year" ng-blur="yearChange()"/>
<i class="fa fa-angle-right" ng-click="nextYear()"></i>
</form>