Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular.js-ng repeat中当前选定选项的值_Javascript_Angularjs_Ng Repeat - Fatal编程技术网

Javascript Angular.js-ng repeat中当前选定选项的值

Javascript Angular.js-ng repeat中当前选定选项的值,javascript,angularjs,ng-repeat,Javascript,Angularjs,Ng Repeat,我有一些条目,它们的json对象看起来有点像 { 'id': 5, 'activityId': 1 } { 'id': 1, 'name': 'Activity name', 'rate': 1200 } <tr ng-repeat="entry in entries"> <td> <activities></activities> </td> <

我有一些条目,它们的json对象看起来有点像

{ 
    'id': 5,
    'activityId': 1
}
{
    'id': 1,
    'name': 'Activity name',
    'rate': 1200
}
<tr ng-repeat="entry in entries">
    <td>
        <activities></activities>
    </td>
    <td>
        // here's supposed to be the rate
    </td>
</tr>
app.directive("activities", function() {
    return {
        restrict: 'E',
        template: '<select ng-model="entry.activityId" ng-options="a.id as a.name for a in activities"></select>'
    }
});
然后是活动,它们的json对象如下所示

{ 
    'id': 5,
    'activityId': 1
}
{
    'id': 1,
    'name': 'Activity name',
    'rate': 1200
}
<tr ng-repeat="entry in entries">
    <td>
        <activities></activities>
    </td>
    <td>
        // here's supposed to be the rate
    </td>
</tr>
app.directive("activities", function() {
    return {
        restrict: 'E',
        template: '<select ng-model="entry.activityId" ng-options="a.id as a.name for a in activities"></select>'
    }
});
现在我呈现的是这样的条目

{ 
    'id': 5,
    'activityId': 1
}
{
    'id': 1,
    'name': 'Activity name',
    'rate': 1200
}
<tr ng-repeat="entry in entries">
    <td>
        <activities></activities>
    </td>
    <td>
        // here's supposed to be the rate
    </td>
</tr>
app.directive("activities", function() {
    return {
        restrict: 'E',
        template: '<select ng-model="entry.activityId" ng-options="a.id as a.name for a in activities"></select>'
    }
});
其中activities是一个如下所示的指令

{ 
    'id': 5,
    'activityId': 1
}
{
    'id': 1,
    'name': 'Activity name',
    'rate': 1200
}
<tr ng-repeat="entry in entries">
    <td>
        <activities></activities>
    </td>
    <td>
        // here's supposed to be the rate
    </td>
</tr>
app.directive("activities", function() {
    return {
        restrict: 'E',
        template: '<select ng-model="entry.activityId" ng-options="a.id as a.name for a in activities"></select>'
    }
});
现在我需要做什么,才能在我的ng repeat中打印速率?因为它是指令内部的属性,但我需要在指令外部打印它

谢谢。

您可以使用:

{{(activities | filter:{id: entry.activityId})[0].rate}}
虽然我觉得这有点难看。更好的方法是直接将活动添加为实体的属性,可能是在加载两个数据集之后。另一种方法是自制过滤器,它还可以检查是否存在错误,例如未找到activityId等


因此,在我的控制器中,我将加载条目和活动,然后循环遍历条目并向每个条目添加活动。。但我也必须在那里使用同样的过滤器,不是吗?如果我在控制器中循环通过条目,从id==activityId的活动中复制速率,然后在指令中选择change,我会更新它?@foxx Yes,在服务中或在控制器中循环通过条目并分配正确的活动,会怎么样。对于这一点,你可以使用与我的答案相同的结构。这样做更好的原因是循环只执行一次,而不是无数次的更新等等。。关于你的第二个评论。我不会将速率复制到条目中,因为这是冗余数据。@foxx不完全是。因为如果复制速率,就复制了值。因此,如果出于任何原因,您以后更改活动的费率,则不会反映在条目上。但是,如果您指定了通过引用指定的活动。因此,速率的变化将反映在这两个地方。@foxx个人来说,在使用angular时,我不会使用正常的提交方式提交表单,而是使用ajax提交表单。如果不可能,我会对实际值使用隐藏输入,例如。