我是棱角分明的新手表。我正在观察控制器内的变量。变量的值发生变化后,我想将此更改后的值发送给指令。
以下是监视功能:
$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
会返回正确的数据。
如何在指令中收到此数据?
答案 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"