2016-07-13 4 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 또는 "파일"유형에 관한 사실. – jazzblue

답변

2

대신 지시어를 사용하여 이하 ​​해키. 다음은 비슷한 질문입니다. AngularJs: How to check for changes in file input fields?

+0

나는이 접근 방식을 좋아한다, 고마워! – jazzblue

+0

Angular는 내가 지시어에서 요소를 콜백으로 전달할 수 없다는 것을 발견했지만, Angular 표현식에서 DOM 노드를 참조하는 것은 허용되지 않습니다! 표현 : - 그래서 그것은 나를 위해 작동하지 않았다. – jazzblue

관련 문제