Javascript 文件状态指令

Javascript 文件状态指令,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我想创建一个指示文档状态的简单指令。我让这个东西在没有指令的情况下通过控制器运行。但是我想创建一个可重用的指令 它将有下列国家: 1-新:2-未保存3-草稿4-已过账 我创造了这样一个Plunk: 我的指令将留在表格之外。那么,我是否可以通过如下指令访问其状态: $scope.mainform.$setSubmitted(); 在指令中,在属性定义的范围变量上发布函数 angular.module("myApp").directive('once', function() { ret

我想创建一个指示文档状态的简单指令。我让这个东西在没有指令的情况下通过控制器运行。但是我想创建一个可重用的指令

它将有下列国家:

1-新:2-未保存3-草稿4-已过账

我创造了这样一个Plunk:

我的指令将留在表格之外。那么,我是否可以通过如下指令访问其状态:

$scope.mainform.$setSubmitted();

在指令中,在属性定义的范围变量上发布函数

angular.module("myApp").directive('once', function() {
  return {
    scope: {
        //publish API 
        onceAPI: '=once'
    },
    link: function(scope, elem, attrs) {
        scope.onceAPI = scope.onceAPI || {};
        //publish function
        scope.onceAPI.setPostComplete = function() {
            console.log("post complete")
            scope.onceAPI.isPosted = true;
        }
    }
  };
});
用法


.

非常感谢@georgeawg。我正在寻找一种方法,将所有功能(包括模板)包含在我的指令中,以便保持表单名称不变,我可以在其他页面中重复使用它。你能帮我吗?你尝试了什么,遇到了什么问题?有关指令的一般信息,请访问。有关更多信息,请参阅.Ok@georgeawg,我已经阅读了。根据我以前的经验,为了访问指令中的表单属性,我必须将其作为指令的依赖项。例如:require:^form,然后在我的link函数中,我将作为:link:function(scope、element、attrs、formCtrl){}访问它,但由于我的指令不是我表单的子项,因此我无法访问它的属性。一种方法是创建另一个指令来了解表单状态,如pristine、dirty等。但是如果您可以指导我如何以可行的方式实现这一点,那将非常有用。塔克斯
<div once="vm.onceAPI"></div>
vm.submit = function(){
  $scope.mainform.$setSubmitted();
  var postData = {in1: vm.in1};
  $http.post(url,postData).then(function() {
      vm.onceAPI.setPostComplete();
  });
};