0

配列(customLayers)をバインドしてng-repeatに使用したいとします。 kv.colorMapオブジェクトの内側に配列を塗りつぶします。 私はこれらのテクニックを使って3つの指令を持っています。しかし、このディレクティブは、このディレクティブの内部にある機能のないボタン(checkResult)を押した後にのみ、バインドされた配列をビューで更新します。AnguarJs:ng-repeatは、指示ボタンの内側のボタンをクリックした後にのみ動作します。

指令テンプレートコード:

... 
<div class="createInfo colorExprContainer"> 
    <div ng-repeat="layer in customLayers">{{layer.color}}</div> 
</div> 

<div class="buttonWrapper text-center"> 
    <button class="btn" ng-click="checkResult()">Ergebnis prüfen</button> 
</div> 
... 

指令JavaScriptのコード:

app.directive('boolKv', function($parse, $timeout){ 
return { 
    restrict: 'E', 
    replace:true, 
    scope:true, 
    templateUrl: "directives/boolKV/boolKV.html", 
    link: function($scope, $element, $attr) { 
     ... 
     var kv = new BAKV({target: cv[0].id, expr: expr}); 
     $scope.customLayers = kv.colorMap.layers; 
     ... 
     $scope.checkResult = function(){console.log("it works!");}; 
}); 

誰かがアイデアを持っていますか? ありがとうございます!

+0

ディレクティブが既にレンダリングされているときにデータを読み込むためではありませんか?参照:http://stackoverflow.com/a/19261577/2747533 – MirMasej

+0

あなたは正しいです、ありがとう! –

答えて

0

ありがとうございましたMirMasej!

あなたは正しく、私はレンダリングの後にそれを呼んでいました。たぶん私はキャンバスのためにイーゼル・ジャズ・ライブラリーを使ったからです。私はこのキャンバス内のブロックをクリックした後で更新を取得したかったのです。

私は、誰かが良いアイデアを持っている場合、私はそれをしようと、追加することによってそれを解決:

kv.colorMap.onChangedLayer = function(layer) { 
     $timeout(function(){ 
      $scope.$apply(); 
     }); 
}; 

Imはカラーマップオブジェクト内のデータを変更した後、このonChangedLayerイベントを呼び出します。

関連する問題