为什么此ng-show指令在模板中不起作用?

最小毫升

我正在尝试编写一条指令,该指令将对元素进行简单的就地编辑。到目前为止,这是我的代码:

directive('clickEdit', function() {
return {
  restrict: 'A',
  template: '<span ng-show="inEdit"><input ng-model="editModel"/></span>' +
            '<span ng-show="!inEdit" ng-click="edit()">{{ editModel }}</span>',
  scope: {
    editModel: "=",
    inEdit: "@"
  },
  link: function(scope, element, attr) {
    scope.inEdit = false;
    var savedValue = scope.editModel;
    var input = element.find('input');

    input.bind('keyup', function(e) {
      if ( e.keyCode === 13 ) {
        scope.save();
      } else if ( e.keyCode === 27 ) {
        scope.cancel();
      }
    });

    scope.edit = function() {
      scope.inEdit = true;
      setTimeout(function(){
        input[0].focus();
        input[0].select();
      }, 0);
    };

    scope.save = function() {
      scope.inEdit = false;
    };

    scope.cancel = function() {
      scope.inEdit = false;
      scope.editModel = savedValue;
    };
  }
}
})

scope.edit函数将inEdit设置为true,并且效果很好-它隐藏了文本并显示了输入标签。但是,将scope.inEdit设置为false的scope.save函数根本不起作用。它不会隐藏输入标签并显示文本。

为什么?

朱莉安·霍尔兹(Juliane Holzt)

您是scope.save()从对事件做出反应的事件处理程序调用keyup但是,AngularJS框架不会调用该事件处理程序。AngularJS仅在认为可能已发生更改以减轻工作量时才扫描模型的更改(到目前为止,AngularJS进行脏检查是计算密集型的)。

因此,您必须利用该scope.$apply功能使AngularJS知道您正在对范围进行更改。scope.save函数更改为此,它将起作用:

scope.save = function(){
  scope.$apply(function(){
    scope.inEdit = false;
  });
});

而且似乎实际上没有必要将此save函数绑定到范围变量。因此,您可能想改为定义“常规”函数或仅将代码集成到事件处理程序中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么此ng-show指令在模板中不起作用?

来自分类Dev

ng-show在指令模板内部不起作用

来自分类Dev

带有形式条件的ng-show在AngularJS中的指令模板上不起作用

来自分类Dev

ng-show在指令中不起作用

来自分类Dev

为什么此define指令似乎不起作用?

来自分类Dev

为什么此mod_rewrite指令不起作用?

来自分类Dev

为什么此angularjs指令不起作用?

来自分类Dev

Angular自定义指令中的动态模板(在嵌套ng-repeats中)不起作用

来自分类Dev

为什么此递归模板不起作用?

来自分类Dev

为什么此模板的数组大小不起作用?

来自分类Dev

为什么此递归模板不起作用?

来自分类Dev

在指令模板中,ng-repeat范围内不起作用

来自分类Dev

如何修复ng-click在递归指令模板中不起作用

来自分类Dev

ng类条件表达式在指令模板中不起作用

来自分类Dev

ng-click在指令模板内不起作用

来自分类Dev

为什么ng-repeat在使用angular的指令中不起作用?

来自分类Dev

为什么我的指令在Plunker中不起作用?

来自分类Dev

简单的ng-show指令不起作用

来自分类Dev

为什么我的ng-show不起作用?

来自分类Dev

为什么此表达式在ng-repeat内部不起作用?

来自分类Dev

为什么此NotificationListenerService不起作用

来自分类Dev

为什么此for循环不起作用?

来自分类Dev

为什么此查询不起作用?

来自分类Dev

为什么此XQuery不起作用?

来自分类Dev

为什么此聚合不起作用?

来自分类Dev

为什么此动画不起作用?

来自分类Dev

为什么此代码不起作用?

来自分类Dev

为什么此调度不起作用?

来自分类Dev

为什么此cronjob不起作用?