Angularjs 在Angular js中,如何创建没有提交按钮的表单

Angularjs 在Angular js中,如何创建没有提交按钮的表单,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我试图创建一个没有提交按钮的智能提交。当其中一个表单元素失去焦点时,表单将自动提交 下面是一个例子: 以下是指令代码: angular.module('plunker').directive("ngSmartSubmit", [ function() { return { restrict: "A", require: "ngModel", scope: { form: "=ngSmartSubmit", data: "=ng

我试图创建一个没有提交按钮的智能提交。当其中一个表单元素失去焦点时,表单将自动提交

下面是一个例子:

以下是指令代码:

angular.module('plunker').directive("ngSmartSubmit", [
  function() {
    return {
      restrict: "A",
      require: "ngModel",
      scope: {
       form: "=ngSmartSubmit",
    data: "=ngSmartModel"
  },
  link: function(scope, element, attrs, ctrl) {
    var action;
    action = function(parentScope) {
      if (ctrl.$dirty) {
        scope.form.$setPristine();
        if (ctrl.$valid) {
          return parentScope.update(scope.data, function(succeed) {
            ctrl.$updated = succeed;
          });
        } else {
          return parentScope.$emit('ngSmartSubmit::controlInvalid');
        }
      }
    };
    ctrl.$updated = false;
    scope.$parent.$on('ngSmartSubmit::controlModified', function() {
      return scope.$apply(function() {
        ctrl.$updated = false;
      });
    });
    return element.bind("focus", function(evt) {
      return scope.$apply(function() {
        ctrl.$updated = false;
      });
    }).bind("blur", function(evt) {
      return scope.$apply(function() {
        return action(scope.$parent);
      });
    }).bind("keydown keypress", function(evt) {
      if (evt.which === ENTER_KEY) {
        scope.$apply(function() {
          return action(scope.$parent);
        });
        return event.preventDefault();
      } else {
        return scope.$parent.$emit('ngSmartSubmit::controlModified');
      }
    });
  }
    };
  }
]);
请提供建议,我如何改进ng smart submit指令


提前感谢。

您的代码看起来不错!plnkr不能代替在问题中添加相关代码。这样做会使问题与稍后讨论的人无关。@Liam,我已经插入了代码。请再好一点,谢谢。另一方面。这个问题似乎更适合我