无法从其中的指令访问ng-repeat的变量

时间:2013-07-05 12:09:08

标签: angularjs angularjs-directive angularjs-ng-repeat

所以我认为这是:

<tr ng-repeat="currentRow in rowsToRender">
<td>{{currentRow[0]}}</td>
<div rmx-schedule-row time="currentRow" time-from="{{currentRow[0]}}" time-to="{{currentRow[1]}}" date="{{dateStr}}"/>
</tr>

指令:

rmx.directive('rmxScheduleRow', function(scheduleService) {
      return {
          scope: {
              time: "=",
              date: "@",
              timeFrom: "@",
              timeTo: "@"
          },
         controller: [
             "$scope", "$rootScope", "$element", "$attrs", "$http",
             function($scope, $rootScope, $elm, $attrs, $http) {
                 $attrs.$observe('timeFrom', function(val) {
                     console.log("change has been detected");
                     console.log($scope);
                     console.log($attrs);
                     console.log(val);
                 });
             }
         ]
     };
 });

在视图中,currentRow [0]被正确评估并打印出预期的内容。

但是在指令中,currentRow [0]和[1]被内插到空字符串(“”),对象time被内插到undefined。我试图发现一个错字或其他东西我会疯了:(

我尝试了$scope.$watch同样的结果。

2 个答案:

答案 0 :(得分:0)

尝试使用$ parse服务从指令解析范围变量。

time = $parse(attr.currentRow)($scope)

答案 1 :(得分:0)

我的猜测是表中的<div>是一个拼写错误,导致插值无声地失败。将其替换为<td></td>,您就赢了:

Working plunk

或许您打算将div包装在表格单元格中:

<td>Stuff
    <div></div>
</td>