2016-04-12 7 views
1

- HTML -戻りデータ

<img ng-if="item.data.topImage" ng-src="{{item.data.topImage | cropImage:240:135}}"> 

オリジナルフィルタ -

.filter('cropImage', [function() { 
     return function (url, width, height, noDefault) { 
      return cropImage(url, { 
       width: width, 
       height: height 
      }); 
     }; 
    }]) 

このcropImageはシンプルな機能でした。 これで、非同期コールバックを使用する関数を呼び出す必要があります。

更新されたフィルタ - -

.filter('cropImage', [function ($q) { 
     return function (url, width, height, noDefault) { 
        var defered = $q.defer(); 
      buildfire.imageLib.local.cropImage(url, { 
       width: width, 
       height: height 
      }, function (e, d) { 
       if (e) 
        defered.reject(''); 
       else { 
        defered.resolve(d); 
       } 
      }); 
      return defered.promise; 
     }; 
    }]) 

しかし、予想通り、これは、失敗し は今、更新されたフィルタはこのようなものです。

この場合、私は何ができますか?私はディレクティブを使用できますが、このフィルタはアプリケーション全体で使用されています。 $タイムアウトを除いて何ができるのですか?

答えて

1

img要素で作業しているので、画像URLが作成されない限り、要求を防止したいので、これをすべて行う指示を実際に調べる必要があります。これが最善の方法だと思うからです。

フィルターを調べる必要があります。v1.3xの後にフィルターが非同期操作を完了し、最後に値を更新するまで、初期値を返すことができます。初期値を返し、値が変更されるまで呼び出されます。

詳しくは、similar answerをご覧ください。

関連する問題