2017-07-18 9 views
0

私は複数の属性を持つディレクティブを持っています。属性の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にディレクティブのスコープに渡されることになっています。しかし、それは動作しません。私は定義されていません

+0

'scope。$ parent'を使ってみてください –

+0

私はあなたのhtmlでは' countObj'ではなく 'count-obj'をattrとして使う必要があると思います。配列インデックス 'count-obj =" countArray [count] "'​​を使う必要はなく、 'count-obj =" count "'だけ使うことができます。 –

+0

@DanielWarke。あなたが正しい。ありがとう。答えとして書く – Abhi

答えて

0

countObjではなく、あなたのhtmlのattrとしてcount-objを使用する必要があります。配列インデックスcount-obj="countArray[count]"を使用する必要はありません。count-obj="count"を使用することができます。

関連する問題