我的控制器没有更新我的指令 - Angular

时间:2013-10-21 16:11:25

标签: javascript angularjs

我有一个指令,当单击一行时会显示详细信息屏幕。我试图让遭遇更新。这是指令:

angular.module('app').directive('chatContainer', function() {
  return {
    scope: {
      encounter: '=',
      count: '='
    },
    templateUrl: 'views/chat.container.html',
    link: function(scope, elem) {
  };
});

以下是该指令的模板:

<div class="span4 chat-container">
 <h5 class="chat-header">
  <span class="container">{{encounter.patient.firstName }} {{encounter.patient.lastName}}</span>
  </h5>
</div>

这是在html中声明指令的地方:

<div chat-container encounter="selectedEncounter" count="count"></div>

这是在单击行时调用的控制器。

angular.module('app').controller('EncounterCtrl', function ($scope, singleEncounter) {

  $scope.count = 500;

  $scope.selectedIndex = -1;

  $scope.selectedEncounter = -1;

  $scope.getSelectedRow = function($index) {
    $scope.selectedIndex = $index;
    $scope.selectedEncounter = $scope.encounters[$scope.selectedIndex];
  };

  $scope.encounter = singleEncounter.selectedEncounter;
});

我进入函数getSelectedRow()并将selectedEncounter更改为正确的遭遇。绑定不会将选择带到我的chatContainer。我想当我在指令范围内声明encounter并将其作为范围类型给它=时,它会绑定它,但我遗漏了一些东西?

1 个答案:

答案 0 :(得分:0)

您需要$apply()更改,但操作值的逻辑应该在chatContainer指令内,而不是在控制器内。