我有以下代码:
HTML:
<body ng-controller="MainCtrl">
<main-dir data="data" on-update-map="updateMap(datalength)"></main-dir>
</body>
JS:
app.directive('mainDir', function () {
function DatasetDirective() {
var directive = {};
directive.restrict = "E";
directive.replace = false;
directive.scope = {
data: "=",
onUpdateMap: "&"
};
directive.templateUrl = 'dataset.html';
directive.controller = function($scope){
// set "datalength" on scope based on some logic here
$scope.datalength = $scope.data.length;
console.log($scope);
};
return directive;
}
return DatasetDirective();
});
dataset.html
<div>
<button ng-click="onUpdateMap()">click me</button>
</div>
plnkr就在这里
基本上,我试图在指令的隔离范围上设置成员。然后单击指令模板中的按钮,我在主控制器上执行包含指令的函数,并将隔离范围的成员传递给函数。我希望将“3”传递给函数,但它的计算结果是“未定义”
我在这里错过了什么吗?
答案 0 :(得分:0)
您需要从模板中传递datalength
作为键值对,基本上您期望的任何参数的名称应作为指令的键提供。
<button ng-click="onUpdateMap({datalength:datalength})">click me</button>
<强> Plnkr 强>