programing

텍스트 입력에서 ng-change가 작동하지 않음

lastcode 2023. 3. 8. 21:12
반응형

텍스트 입력에서 ng-change가 작동하지 않음

저는 앵글J는 처음입니다.제 코드에는 텍스트 필드에서 초기화된 색상 선택기가 있습니다.사용자가 색상의 값을 변경하고 해당 색상이 스팬의 텍스트 배경으로 반영되기를 원합니다.안 돼요.무엇이 부족합니까?

HTML:

<body ng-app="">
   <input type="button" value="set color" ng-click="myStyle={color:'red'}">
   <input type="button" value="clear" ng-click="myStyle={}">
   <input type="text" name="abc" class="color" ng-change="myStyle={color:'green'}">
   <br/>
   <span ng-style="myStyle">Sample Text</span>
   <pre>myStyle={{myStyle}}</pre>
</body>

플런커 - http://plnkr.co/edit/APrl9Y98Em0d6rxuzRDE?p=preview

하지만 내가 그것을 바꿀 때ng-click그건 효과가 있다.

ng-change에는 ng-model이 필요합니다.

<input type="text" name="abc" class="color" ng-model="someName" ng-change="myStyle={color:'green'}">

같은 문제가 있습니다. 제 모델은 다른 양식에서 바인딩되어 있습니다.ng-change그리고.ng-model아직 작동하지 않습니다.

<input type="hidden" id="pdf-url" class="form-control" ng-model="pdfUrl"/>

<ng-dropzone
  dropzone="dropzone"
  dropzone-config="dropzoneButtonCfg"
  model="pdfUrl">
</ng-dropzone>

입력#pdf-url단, dropzone에서 데이터를 가져옵니다(두 가지 바인딩).ng-change이 경우에는 작동하지 않습니다. $scope.$watch이 솔루션은 다음과 같습니다.

$scope.$watch('pdfUrl', function updatePdfUrl(newPdfUrl, oldPdfUrl) {
  if (newPdfUrl !== oldPdfUrl) {
    // It's updated - Do something you want here.
  }
});

이게 도움이 됐으면 좋겠다.

Angular에서 무언가를 편집하려면 html에 ngModel을 삽입해야 합니다.

샘플에서 다음을 시험해 보십시오.

    <input type="text" name="abc" class="color" ng-model="myStyle.color">

당신은 변화를 전혀 볼 필요가 없어요!

다음과 같은 작업을 수행할 수 있습니다.

지시문 사용

directive('watchChange', function() {
    return {
        scope: {
            onchange: '&watchChange'
        },
        link: function(scope, element, attrs) {
            element.on('input', function() {
                scope.onchange();
            });
        }
    };
});

http://jsfiddle.net/H2EAB/

또한 함수를 다음과 같이 바인드할 수도 있습니다.ng-change이벤트 리스너(좀 더 복잡한 로직을 실행할 필요가 있는 경우)

<div ng-app="myApp" ng-controller="myCtrl">      
        <input type='text' ng-model='name' ng-change='change()'>
        <br/> <span>changed {{counter}} times </span>
 </div>

...

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
      $scope.name = 'Australia';
      $scope.counter = 0;
      $scope.change = function() {
        $scope.counter++;
      };
});

https://jsfiddle.net/as0nyre3/1/

우선 네 코드를 보고 있는데 넌 컨트롤러가 없어따라서 컨트롤러를 사용하는 것이 좋습니다.컨트롤러를 사용해야 할 것 같습니다. 왜냐하면 변수가{{myStyle}}2개의 곱슬곱슬한 괄호가 보여서 컴파일 할 수 없습니다.

두 번째로 입력에 ng-model을 사용해야 합니다.이 지시어는 입력 값을 변수에 바인드합니다.

언급URL : https://stackoverflow.com/questions/26114974/ng-change-not-working-on-a-text-input

반응형