2013-07-25 17 views
5

私はこのコントロールを使用しています:http://blueimp.github.io/jQuery-File-Upload/angularjs.htmlファイルをアップロードするには角度をつけてください。ファイルがサーバーにアップロードされると、URLが返され、クライアントに表示されます。成功コールバック。使用されているプラ​​グインは通常のjqueryファイルのアップロードですが、私が使用しているアンギュラ・ディレクティブ・ラッパーがあります。

$scope.options = { 
    url: '/api/Client/', 
    type: 'PUT', 
    done: function (event, data) { 
     var scope = angular.element(this).scope(); 
     scope.test = "doesn't work"; 
     scope.$apply(function() { 
      scope.test = "this doesn't work either"; 
     }); 
    } 
}; 

ファイルが正常にアップロードし、行って関数が呼び出されたが、しかし私は、ビューを更新することができません:ここで

は、私は、コールバックを定義する方法です。最初は範囲を変更するだけで試しましたが、$ apply()関数が必要になることに気付きましたが、それはどちらも機能しません。

私も

$scope.options = { 
    url: '/api/Client/', 
    type: 'PUT', 
    done: function (event, data) { 
     $scope.test = "doesn't work"; 
     $scope.$apply(function() { 
      $scope.test = "this doesn't work either"; 
     }); 
    } 
}; 

も機能しないことを試してみました。私はなぜ私のビューを更新していないのか分かりませんし、完了した呼び出しがちょうどajaxの成功イベントであるため、この特定のプラグインが$ scopeの問題を引き起こす可能性があります。私はAngularJs 1.1.5を使用していますが、1.0.7も試してみましたが、同じ問題が発生しています。

+0

applyをコールすると、apply/digestがすでに有効であるというエラーが表示されますか? –

+0

いいえ、間違いなしです。それは何もしません。私が複数回それを呼び出して$ scope.testの値を見ると、以前に設定された値が表示されます。ビューはその値で更新されません –

+0

done関数が呼び出されると、2番目のバージョンは実際には私にはうまくいくように見えます。 –

答えて

11

は、問題が何であったか、それをより明確にするために私のコメントからコピー:

私は問題を把握するために管理しました。彼らの例を使用すると、ng-controllerの複製がありました(それらの例は他のコントローラ内に入れ子になっていました)、両方とも同じコントローラを使用していましたが、入れ子のコントローラスコープ内にあったものだけを更新するようです。重複するng-controller属性を削除すると、すべて正常に動作します。

+0

全く同じ問題がありました。興味深いことに、ルート要素のバインディング(ng-controllerタグの最初の出現)は更新されませんでした。 – Joon

+0

あなたは最高です!私は同じ問題を抱えていて、コントローラの重複を取り除くことですべてがソートされました。 – devTimmy

1

私はこの問題に一日を費やしていたので、私もチャイムに入ると思っていました。

HTMLでは、ng-controllerがul要素ではなくdivラッパーに適用されていることを確認してください。

関連する問題