2016-07-21 4 views
0

흐림에 대한 지시어에서 요소를 업데이트하려고하지만 모델이 변경되지 않고보기 만 변경됩니다. 사람들의 https://plnkr.co/edit/yicenDSHNagapXxP7yrF?p=previewAngular 지시어에서 모델 업데이트

많은이 문제를 갖고있는 것 같다과에 함수를 사용하여 특정 모델을 변경하는 방법에 대한 조언을 많이가 :

app.directive('myDirective', function() { 
    return { 
    require: 'ngModel', 
    link: function(scope, element, attrs, ctrl) { 
     element.bind('blur', function(e) { 
     element[0].value = 'new val'; 
     }); 
    } 
    }; 
}); 

나는 문제를 강조하는 간단한 쿵하는 소리를 만들었습니다 범위. 그러나이 지시어를 어떤 입력 에나 놓을 수 있기를 바란다. 어떤 모델을 변경 하느냐에 대한 하드 코드는 여기서 작동하지 않을 것이다.

여기에서 설명한대로 $ apply를 사용해 보았지만 작동하지 않습니다. http://nathanleclaire.com/blog/2014/01/31/banging-your-head-against-an-angularjs-issue-try-this/. 내가 뭘 놓치고 있니?

감사합니다,

답변

1

이 시도 (plunker) :

var app = angular.module('myApp', []); 
app.controller('myCtrl', ['$scope', function($scope) { 

    $scope.myVal = 'Demo'; 

}]); 

    app.directive('myDirective', function() { 
     return { 
     require: '^ngModel', 
     scope:{ngModel:'='}, 
     link: function(scope, element, attrs, ctrl) { 
      element.bind('blur', function(e) { 
      scope.ngModel='new val'; 
      scope.$apply(); 
      }); 
     } 
     }; 
    }); 
+0

딱! ngModel이 필요할 때 사용할 수있는'^'는 무엇입니까? 그것과 함께 또는없이 작동합니까? –

+0

지시어가 작동하려면 지시어에 값이있는 ngModel 속성이 'myDirective'와 같은 요소에 있어야 함을 의미합니다. 이 방법으로 링크 함수의 'ctrl' 매개 변수는 ngModelController에 반영됩니다. 자세한 내용은 여기를 클릭하십시오. [NgModelController] (https://docs.angularjs.org/api/ng/type/ngModel.NgModelController) –

관련 문제