【发布时间】:2016-06-27 02:54:11
【问题描述】:
我是 Angular 新手,并且在使用手表时遇到了一些问题。我正在观察控制器内的变量。一旦变量的值改变了,我想把这个改变的值发送给一个指令。
这是手表功能:
$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 向我返回正确的数据。
我如何在指令中接收这些数据?
【问题讨论】:
-
在您的 html 中,您如何将 productCard 传递给您的指令? 2路绑定应该负责更新指令的
productCard,所以你不需要做任何事情来“传递它”。指令中的console.log函数在指令首次创建且productCard 为undefined时运行。它可能会在稍后的某个时间点设置为一个值 -
应该写在问题中,但这是我的 HTML:
-
看起来不错。因此,当您更改控制器的
$scope.overlayProductCard时,它会自动设置指令的$scope.productCard
标签: javascript angularjs angularjs-scope watch