gpt4 book ai didi

javascript - 基本 Angular 输入控制

转载 作者:行者123 更新时间:2023-11-30 08:43:21 25 4
gpt4 key购买 nike

我有一个基本的输入控件,它具有三个绑定(bind)事件。该控件显示年份值。在每个事件中,控件应将其值存储在 cookie 中,以便在页面刷新时,当前值保持不变。

事件:

  1. onchange input 本身(显然)
  2. 输入 左侧的箭头会增加它
  3. 向右的箭头递减它

我知道如何在 JQuery 中执行所有这些操作,但我正在尝试在 Angular 中设置此 Controller 。当您递增/递减时,该控件工作得很好,但是当用户手动编辑输入时,递增/递减功能都不起作用。我也怀疑这是构建此类控件的一种非常糟糕的方法......下面是我尝试的代码:

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>

最佳答案

使用ng-model绑定(bind)到$scope.year

<input class="form-control" type="text" ng-model="year" placeholder="Year" />

然后使用$watch检测变化

 $scope.$watch('year', function() {
// year has been manually changed, put your save logic here
});

但实际上你应该创建一个 directive ,而不是 Controller ,这样您就可以重用您的组件

关于javascript - 基本 Angular 输入控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24224258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com