私は複数の属性を持つディレクティブを持っています。属性の1つは、配列値をディレクティブにバインドするために使用されます。 I console.log(scope)
にlink
があり、そのプロパティがアタッチされていますが、未定義です。 countArray= [0,1..]
ディレクティブに渡される配列の値はng-repeatで定義されていません
を(最後の値が1である場合2)私は次の番号への配列の増加の値...値directive1に0とdirective2などに1を渡したい:それは、配列は基本的に含まれているプロパティcountObj:undefined
を持っています新しいディレクティブが作成された場合。私はng-repeat
を使用してディレクティブを表示し、新しいディレクティブが必要なときはインクリメント配列(0,1,2 ..)を使用しています。私は各ディレクティブにそれぞれの配列の値を渡したいと思います。
最初に、$ scopecountArray = [0]がデフォルトであるので、ng-repeat
には値が1つあり、デフォルトでは1つの指示が表示されます。したがって、少なくとも最初の指示文の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
上記の値を含めることになったが、このディレクティブI 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];
なので、ページが読み込まれるときに少なくとも1つの指示があるようにします。私はこれを行う新しいディレクティブたいとき:
$scope.addDirective = function() {
$scope.countArray.push($scope.countArray.length);
}
を新しい値がng-repeat
にディレクティブのスコープに渡されることになっています。しかし、それは動作しません。私は定義されていません
'scope。$ parent'を使ってみてください –
私はあなたのhtmlでは' countObj'ではなく 'count-obj'をattrとして使う必要があると思います。配列インデックス 'count-obj =" countArray [count] "'を使う必要はなく、 'count-obj =" count "'だけ使うことができます。 –
@DanielWarke。あなたが正しい。ありがとう。答えとして書く – Abhi