相关疑难解决方法(0)

如何让ng-model不立即更新?

码:

<input type="text" ng-modal="name" />
{{name}}
Run Code Online (Sandbox Code Playgroud)

当我输入内容时input,以下内容{{name}}会立即更改.是否能够配置它只name在我输入所有字符并保留输入后更新?

binding angularjs

22
推荐指数
4
解决办法
3万
查看次数

AngularJS - 模糊+改变?

结合ng-changed和ng-blur的最简单方法是什么?

我发现这篇文章:如何让ng-model不立即更新?

然而,这不再适用于angluar 1.2+有没有办法实现相同的行为?

我想我必须自己存储一个旧值的副本,并将新值与模糊值进行比较,如果我尝试做同样的事情,或者有更简单的方法吗?

javascript angularjs angularjs-directive

20
推荐指数
2
解决办法
2万
查看次数

Angularjs:如何在输入时输入[text] ngModel延迟值

我有一个带ngModel绑定的文本框,如下所示:

<input type="text" ng-model="typing" />

和这个texbox的价值

value: {{ typing }}

我希望模型延迟在我输入时更新值.也许如果我停止输入500ms,模型将更新所有值(我在文本框中键入的所有内容).我做了一些谷歌,但没有运气.安永有什么想法?请帮忙.

编辑

这个Angularjs:input [text] ngChange在值发生变化时触发,不能为我的情况提供解决方案.它会在模糊后带来解决方案更新值,但我希望在停止输入后更新值,而不是模糊文本框.

编辑2(答案)

对于角度版本1.4,指令ngModelOptions在我的情况下很有用.我可以像这样编写,<input ng-model="typing" ng-model-options="{ updateOn: 'default', debounce: {'default': 500, 'blur': 0} }" />将更新值延迟到默认的500ms模型,如果丢失焦点则立即更新.

javascript angularjs

19
推荐指数
2
解决办法
1万
查看次数

仅在按键输入时更新AngularJS ng-model?

我有一个用于搜索的输入字段:

<input id="search_input" type="text" ng-model="filter.search_terms">
Run Code Online (Sandbox Code Playgroud)

我还使用了许多其他过滤器(复选框,收音机等),我在过滤器上有一个$ watch,所以任何更改都会触发搜索.问题是我不希望每次输入一个字母时都要搜索文本字段,只希望只有在按Enter键时才将其"保存"在filter.search_terms上.

是否有一种简单的方法可以执行此操作,还是必须删除ng-model并使用将其设置为输入的功能进行ng-click?

angularjs angular-ngmodel

15
推荐指数
3
解决办法
2万
查看次数

如何为AngularJS创建变更指令?

通常,每次用户按下键时,ng-model都会更新绑定模型:

<input type="text" ng-model="entity.value" />
Run Code Online (Sandbox Code Playgroud)

这在几乎所有情况下都很有效.

但是当onchangeup/onkeydown事件发生时,我需要它来更新onchange事件.

在旧版本的角度中,有一个ng-model-instant指令,它与ng-model现在一样工作(至少对于用户来说 - 我对它们的实现一无所知).因此,在旧版本中,如果我刚刚给出了ng-model,它就是更新模型onchange,当我指定ng-model-instant时,它正在更新模型onkeypup.

现在我需要ng-model用于元素的"更改"事件.我不希望它是即时的.这样做最简单的方法是什么?

编辑

输入仍然必须反映模型的任何其他更改 - 如果模型将在其他位置更新,则输入的值应反映此更改.

我需要的是让ng-model指令像在旧版本的angularjs中一样工作.

以下是我正在尝试做的解释:http: //jsfiddle.net/selbh/EPNRd/

events angularjs

13
推荐指数
1
解决办法
6万
查看次数

每次使用的数据发生变化时,如何让AngularJS重新运行一个函数?

有了Knockout,我可以说

<html>
    <head>
        <script type="text/javascript" src="knockout-2.1.0.js"></script>
    </head>
    <body>
        <input type="text" data-bind="value: a"></input> +
        <input type="text" data-bind="value: b"></input> =
        <span data-bind="text: result"></span>
        <script type="text/javascript">
            function ExampleViewModel() {
                this.a = ko.observable(5);
                this.b = ko.observable(6);
                this.result = ko.computed(function() {
                    return parseInt(this.a()) + parseInt(this.b());
                }, this);
            }

            ko.applyBindings(new ExampleViewModel());
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

并且result每次a和b改变时都会重新计算.我怎样才能让AngularJS为我做这个?我试过了

<html ng-app>
    <head>
        <script type="text/javascript" src="angular-1.0.1.min.js"></script>
        <script type="text/javascript">
            function ExampleCtrl($scope) {
                $scope.a = 5;
                $scope.b = 6;
                $scope.result = function() {
                    return this.a + this.b
                };
            }

</script>
    </head> …
Run Code Online (Sandbox Code Playgroud)

angularjs

6
推荐指数
1
解决办法
1万
查看次数

$ render停止工作在角度1.2.2(文件验证指令)

我已经从角度1.0.8迁移到了昨天的角度1.2.2,除了一堆其他被破坏的东西,我已经修复了,以下指令中的$ render函数不再触发.

有没有人在这之前唠叨这种行为?0

directive('validFile', function (utils, $filter) {
    return {
        require: 'ngModel',
    link: function (scope, el, attrs, ngModel) {

      if(utils.isMobileAgent())
          return;
      var form = el.parents().find('form');
        ngModel.$render = function () {
          debugger;
          if(form.hasClass('ng-pristine'))
            return;

          if(el.val() && el.val().length > 0){
            ngModel.$setViewValue(el.val());
          }

          if(el.hasClass('ng-invalid')){
            el.parent().addClass('ng-invalid').addClass('ng-invalid-required');
            ngModel.$setValidity(attrs.name, false);
            ngModel.$setPristine(attrs.name, false);
            scope.fileMsg =  $filter('translate')('PLEASESELECT') + ' ' + $filter('translate')(attrs.name);
            // scope.layout.showFileError = true;
          }
          else{
            el.parent().removeClass('ng-invalid').removeClass('ng-invalid-required').addClass('ng-valid');
            ngModel.$setValidity(attrs.name, true);
          }
        };
        el.bind('mouseover', function(){
          if(form.hasClass('ng-dirty') && el.parent().hasClass('ng-invalid'))
          el.removeClass('ng-pristine');
        });
        el.bind('mouseleave', function(){
          if(el.val() && el.val().length > 0){
           el.addClass('ng-pristine'); …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-directive

6
推荐指数
1
解决办法
811
查看次数