通过角度指令访问监视内部的变量

时间:2016-03-11 18:28:16

标签: javascript angularjs angularjs-scope watch

我是棱角分明的新手表。我正在观察控制器内的变量。变量的值发生变化后,我想将此更改后的值发送给指令。

以下是监视功能:

$scope.$watch("comboDetail", function(newValue, oldValue) {
  $scope.overlayProductCard = $scope.comboDetail.collectionCd;
  console.log("$scope.overlayProductCardWithinWatch", $scope.overlayProductCard);
}

我的指示:(为了阅读而剪裁)

return {
scope: {
      productCard: '='
    },
    restrict: 'E',
    templateUrl: appVersionFactory.getViewBaseUrl() + '/assets/partials/tv/tv-overlay-link.html',
    replace: true,
    link: function($scope, iElm, iAttrs, controller) {
      console.log("$scope.productCard", $scope.productCard);

  };

但是,$scope.productCard会向我返回undefined,而$scope.overlayProductCardWithinWatch会返回正确的数据。

如何在指令中收到此数据?

2 个答案:

答案 0 :(得分:1)

假设我有<test param="controllerParam"></test>指令和模板<div>{{param}}</div>。如果我在控制器中更改controllerParam,我不需要观察/其他东西 - 指令将获得新的价值。如果我想在每次更改时在指令中记录新值 - 那么我需要在指令中观察。

链接函数每个元素执行一次,因此只记录一次变量的值。 (初一个)

答案 1 :(得分:0)

试试这个:

link: function($scope, iElm, iAttrs, controller) {
  scope.$watch('productCard', function (newValue) {
    console.log("$scope.productCard", newValue);
  })
};

之前,在HTML中的元素标记中传递productCard之前,如: data-product-card="overlayProductCard"