我对Angular中的范围有疑问。
我有一个指令:
skillFoundry.directive('myPromotioncode', function(){
return {
restrict: 'E',
transclude: true,
scope: {
'close': '&onClose'
},
templateUrl: '/templates/my-promotioncode-close.html'
};
});
在我的控制器下我有以下" HTML" (玉)
my-promotioncode.promotion_code(ng-hide="dialogIsHidden" on-close="hideDialog()")
div.row
| Please enter your promotion code:
div.col-xs-4
input.form-control(type="text", ng-model="promotionCode")
{{promotionCode}}
div.col-xs-4
a.btn-primary.btn-sm(ng-click="promotionCodeSubmit(promotionCode)") Submit
在我的控制器中,这个功能:
$scope.promotionCodeSubmit = function(theCode) {
console.log("promotion code submit called !", this);
var promotionCode = theCode;
console.log("The promotion code is:" + promotionCode);
};
该函数按原样工作,但$scope.promotionCode
始终未定义。我不应该将promoteCode的值传递给函数。我的理解是transclude
使当前范围可用于此控制器和正在进行的控制器吗?
为什么$scope.promotionCode
未定义?
修改
我意识到这个问题不清楚并且已经重述,函数$scope.promotionCodeSubmit
的工作方式如上所述,但是,什么也应该有效,但不是以下内容:
$scope.promotionCode = ""; /* init to something */
$scope.promotionCodeSubmit = function() {
console.log("promotion code submit called !", this);
var promotionCode = $scope.promotionCode;
console.log("The promotion code is:" + promotionCode);
};
$scope.promotionCode
没有被正确绑定,或者有一个"范围"问题,因为它在控制器内不是预期的。