Javascript AngularJS如何在指令中保持内部状态?

Javascript AngularJS如何在指令中保持内部状态?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我想在指令中维护一个内部状态对象,我可以将其作为函数的参数传递给控制器 因此,该指令模板如下所示: <div> <form name="Test"> <input name="Name"> </form> <button ng-click="submit(formValues)">Submit</button> </div> eventHandler({param

我想在指令中维护一个内部状态对象,我可以将其作为函数的参数传递给控制器

因此,该指令模板如下所示:

<div>
     <form name="Test">
         <input name="Name">
     </form>
     <button ng-click="submit(formValues)">Submit</button>
</div>
eventHandler({param:[something, somethingelse]})

提交
我不必是一个表单,只要我可以将所有的值传递回控制器 作为函数中的参数


angularJS是否可能实现这一点,或者我是否走错了方向?

这就是scope属性的用途。尝试使用ng模型将输入与作用域的属性绑定:

<div id="holder">
     <input name="something" value="" ng-model="something" />
         <input name="somethingelse" value="" ng-model="somethingelse"/>
         <button ng-click="eventHandler({param:[something, somethingelse]})">
              Call own function
         </button>
</div>
并在您的指令范围内这样称呼它:

<div>
     <form name="Test">
         <input name="Name">
     </form>
     <button ng-click="submit(formValues)">Submit</button>
</div>
eventHandler({param:[something, somethingelse]})

您也可以使用该指令的控制器进行此操作。 为指令所声明的每个元素实例化控制器get。 大概是这样的:

.directive (function () {
    return {
        controller: function () {
            var a = 'something really private' + new Date().getTime();
            this.getA = function () {
               return a;
            }
        }
    }
}) 

通过将作用域注入控制器或作为指令链接函数中的第四个参数,您可以访问该作用域。

我不是100%清楚您在问什么,但您是说您想要
输入值吗?尝试将
ng model=“myModel”
绑定到您的输入。您不需要传入此值,它将在控制器中通过
$scope.myModel
访问onsubmit。我还建议您使用
,它可以为您执行所有默认操作。我的上帝!你是一个救生员,我不知道我可以只介绍模型。我没有完全理解scopes。谢谢