Javascript 调用具有控制器返回值的指令函数

Javascript 调用具有控制器返回值的指令函数,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我有一个带有表单的指令(这里的示例是一个简单的输入),我在同一个页面中使用了几个表单(index.html) 在这个指令之外,我有一个按钮,当我点击它时,我想得到所有指令输入中的数据 起初我试着用这个问题的答案 但是我很难同时使用多个指令。 我还尝试将childHead$$childHead与childs列表一起使用,但我从其他帖子中了解到这样做是不对的。无论如何,我不知道为什么,但最后一个解决方案停止工作(它无法再调用指令函数) 这样做的最佳方法是什么 以下是我的简化代码: index.htm

我有一个带有表单的指令(这里的示例是一个简单的输入),我在同一个页面中使用了几个表单(index.html) 在这个指令之外,我有一个按钮,当我点击它时,我想得到所有指令输入中的数据

起初我试着用这个问题的答案 但是我很难同时使用多个指令。 我还尝试将childHead$$childHead与childs列表一起使用,但我从其他帖子中了解到这样做是不对的。无论如何,我不知道为什么,但最后一个解决方案停止工作(它无法再调用指令函数)

这样做的最佳方法是什么

以下是我的简化代码:

index.html:

    <div ng-repeat="item in data">
        <h1> {{item.name}} </h1>
        <my-dir info=item >/my-dir>
    </div>
    <input type="submit" value="Save" ng-click="save()" />

实现相同结果的最佳方法是将数据作为双向绑定参数传递给指令,就像您通常使用angular附带的标准指令上的ng model所做的那样

。。。 范围:{ 信息:“=”, 数据:'=' },

然后

<my-dir info="item" data="data[0]" ></my-dir>
<my-dir info="item" data="data[1]" ></my-dir>


从什么
myDir
获取有关
保存的数据?他们每个人还是只有一个?我想要每个人,但不是分开。我的意思是,我希望能够比较它们,等等。那么,您是否只希望内部输入字段的值绑定到
myfield
ngModel?是的,虽然我的原始指令由多个输入组成,但我认为这不重要。重要的是您希望能够将哪些数据传递到外部。如果是简单的ngModel,那么只需通过双向绑定配置作用域就很容易了。如果你想以某种方式公开多个值,那就不同了。这是最简单、最自然的方法。另一种方法是可重用的服务。和数据[0],数据[1]。。。将包含myField中的值?完全正确。数据[0]和数据[1]可以是包含所需所有字段的对象。如果其中任何一个在你想将它们传递到外部之前需要特殊处理,你可以设置一个$watch,在MyField更改时将处理后的值保存到数据中。我想我做错了什么。我添加了-->data=“data[$index]”。然后在控制器中的save函数中,我尝试访问$scope.data,但它未定义。在指令中,我编写了scope.data=scope.myfield(现在让我们尝试使用一个字段),您是否在父控制器范围中定义了变量数据?我还注意到,我在回答数据中不明智地命名了一个变量,尽管您已经在使用ng repeat的数据源的名称,所以也可能是这样。
    $scope.save= function(){
        // Call the getData function of the directive or get 
        // the data needed somehow and do something with it
    }
<my-dir info="item" data="data[0]" ></my-dir>
<my-dir info="item" data="data[1]" ></my-dir>