0

所以我认为:

<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了相同的结果。

4

2 回答 2

0

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

工作笨拙

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

<td>Stuff
    <div></div>
</td>
于 2013-07-05T20:07:35.197 回答
0

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

time = $parse(attr.currentRow)($scope)
于 2013-07-05T13:48:51.173 回答