我有一个包含多个属性的指令。其中一个属性用于将数组值绑定到指令。我在console.log(scope)
函数中link
并查看其属性,但未定义。它具有属性countObj:undefined
该数组基本上包含:countArray= [0,1..]
我想将值0传递给directive1,将1传递给directive2等。如果创建了新指令,则数组中的值将增加到下一个数字(如果最后一个值为1则为2)。当我想要一个新指令时,我正在使用ng-repeat
来显示指令和递增数组(0,1,2 ..)。我想将相应的数组值传递给每个指令。
首先,我默认使用$ scope.countArray = [0],因此ng-repeat
有一个值,默认情况下会显示一个指令。所以至少第一个指令的console.log(scope.countObj)
应该包含一个值,而不是undefined
。
这是使用指令的html:
<month-dir ng-repeat="count in countArray" countObj="countArray[count]" on-cl="removeDirCtrl(removeVal)" obj="ebObj.costArray[count]">
<ng-transclude></ng-transclude>
</month-dir>
上面的属性countObj
应该包含值,但在console.log(scope.countObj)
这是指令:
ebApp.directive('monthDir', function () {
return {
restrict: 'E',
templateUrl: 'htmlFiles/monthDirective.html',
transclude: true,
scope: {
ebObj: "=obj",
onCl: "&",
countObj: "=" //this is undefined
},
link: function (scope, element, attrs) {
scope.change = function (changedUnit) {
changedUnit.totalCost = 0;
//console.log(changedUnit);
changedUnit.totalCost = changedUnit.unitsConsumed * 50;
console.log(scope);
console.log(scope.$eval(attrs.model));
}
scope.removeDir = function (removeVal) {
console.log(removeVal);
scope.onCl({ removeVal: attrs.model });
}
},
controller: function ($scope) {
//console.log($scope);
}
}
})
在控制器中我有$scope.countArray = [0];
这样,当页面加载时至少有一个指令。当我想要新的指令时,我这样做:
$scope.addDirective = function () {
$scope.countArray.push($scope.countArray.length);
}
新值应该传递给ng-repeat
中指令的范围。但它不会起作用。我得到了未定义的
答案 0 :(得分:0)
您需要在html中使用count-obj
作为attr,而不是countObj
。您不需要使用数组索引count-obj="countArray[count]"
,只需使用count-obj="count"
。