나는 등 (나중에 설명 될 것이다 지침 포함) 다양한 입력이 있습니다사용 컨트롤러 속성/방법
<input mask-value="ssn" validate="checkSsn"/>
<input mask-value="pin" validate="checkPin"/>
이러한 속성은 컨트롤러에있는을 :
app.controller("Ctrl", ['$scope', function ($scope) {
$scope.ssn = "";
$scope.pin = "";
$scope.checkSsn = function() { /* validate $scope.ssn */ };
$scope.checkPin = function() { /* validate $scope.pin */ };
}]);
마지막으로, maskValue
지시어 :
app.directive("maskValue", function() {
return function (scope, element, attrs) {
/* does some focus/blur magic and string replacement */
scope[attrs.maskValue] = this.value;
scope[attrs.validate]();
};
});
이 작동하지만, 나에게 각도의 오용처럼 보인다. 대신 같이 고립 된 범위를 사용하는 것이 더 나을 :
scope: {validate: "&"}
가 그럼 난
scope.validate()
대신
scope[attrs.validate]()
를 사용할 수 있습니다.
그러나, 격리 된 범위와 나는 컨트롤러의 해당 값을 업데이트 할 수 없습니다.
{maskValue: "="}
을 사용하면 특정 값이 아닌 부모의
maskValue
속성을 업데이트하려고하기 때문에 작동하지 않습니다. 나는
{ssn: "="}
을 사용하는 것이 효과적 일 것이라고 생각하지만 컨트롤러의 특정 속성을 업데이트해야한다. 지시어를 유연하게 만들 수있는 지시어 속성으로 설정해야한다. 분명히
$parent
을 사용하는 것은 권장하지 않습니다.
격리 된 스코프 지시문 내에서 컨트롤러의 속성에 동적으로 액세스하려면 어떻게합니까?
- 예 작업 코드 : http://jsfiddle.net/MmyvX/ 내가 (작동하지 않는) 달성하기 위해 노력하고 무엇을
- 시도 : http://jsfiddle.net/MmyvX/1/는
편집 : 내가 입력에 등 ng-model=ssn
을 사용할 수 없습니다 mask-value
의 포커스/흐림 이벤트 중에 입력의 실제 값이 변경되기 때문입니다. 예를 들어 *****####
이 될 수도 있지만 실제 값인 #########
을 어딘가에 저장해야합니다. 컨트롤러는 다른 이유로 나중에 사용할 것이므로 적절한 장소 인 것으로 보입니다.
'= '속성이있는 격리 범위를 사용하면 원하는 결과를 정확하게 얻을 수 있습니다. 왜 효과가 없다고하니? Plunker/jsFiddle 스크립트를 제공 할 수 있습니까? –
@MichaelBenford 나는 하나를 세울 것이다. '='는 (존재하지 않는) 컨트롤러에서'maskValue'를 갱신 할 것이기 때문에 정확하게 동작하지 않습니다. 예를 들어'ssn : "="'할 수 있지만 특정 값에 의존하고 있습니다. 나는 투명하게 속성을 업데이트 할 수 있기를 원합니다. –
@MichaelBenford이 작품이 작동하는 것을 볼 수 있습니다 : http://jsfiddle.net/MmyvX/ - 이것은 고립 된 범위를 사용하여 더 많은 각도로 (제 생각에는) 제 시도입니다. 그것은 작동하지 않습니다 : http://jsfiddle.net/MmyvX/1/ –