2016-07-13 10 views
2

私は以下のコードを持っています(下記参照)。ボタンをクリックしてファイルを選択すると、ビュー内のdata.myVarは変更されません。 (どういうわけか、コントローラーを踏んでいる間に$scope.data.myVarが正しく更新されているのがわかります)。なぜこうなった?

HTML抜粋(それは以下コントローラ下の下にある):

{{data.myVar}} 

<input type="file" onchange="angular.element(this).scope().setRuleFile(this)" /> 

JS:

angular.module('myModule') 
    .controller('MyCtrl', ['$scope', function ($scope) { 

    $scope.data = { 
     myVar: 'init' 
    }; 

    $scope.setRuleFile = function(element) { 
     $scope.data.myVar = 'changed'; 
    } 

}]); 
+0

コンソールでエラーが発生しますか?あなたはこれを再現する簡単なデモを提供することができます。 – developer033

+0

イベントは角度コンテキスト外ですので、ダイジェストを実行するには角度を指定する必要があります – charlietfl

+0

@charlietfl:これはビューテンプレートであるhtmlファイルから抜粋したものであり、すべてのルーティングなどを貼り付けたくありませんでした。 onchangeまたは "file"タイプに関する事実。 – jazzblue

答えて

2

ではなくディレクティブを使用する以下ハックです。ここでも似たような質問があります: AngularJs: How to check for changes in file input fields?

+0

私はこのアプローチが好きです、ありがとう! – jazzblue

+0

私は、Angularは、私がスコープで定義したコールバックへのディレクティブから要素を渡すことを許していませんでしたが、Angular式でDOMノードを参照することはできません!表現: - それは私のために働かなかった。 – jazzblue

関連する問題