사용자 지정 지시문 textareaInput
을 구현하려고합니다. 하지만 지시어에 대한 사용자 지정 이벤트 구현 방법을 알지 못했습니다.사용자 지정 지시문에 대한 사용자 지정 이벤트 작성
코드는 다음과 같습니다. 나는 아래처럼 사용하는보기에서
<div>
<textarea ></textarea>
<label>
<small></small>
<span >*</span>
</label>
</div>
: 같은
myApp.directive('textareaInput',function() {
var textareaInputDir = {};
textareaInputDir.restrict="E";
textareaInputDir.replace="true";
textareaInputDir.templateUrl="../../../views/widget/textarea/textarea-template.html";
textareaInputDir.scope={};
textareaInputDir.link=function (scope, jqElement, attrs) {
scope.elementDefinition={};
scope.elementDefinition.label=attrs.label;
scope.elementDefinition.isShow=attrs.isshow;
scope.elementDefinition.isRequired=attrs.isrequired;
scope.elementDefinition.isDisabled=(attrs.isdisabled === "true");
scope.elementDefinition.defaultValue=attrs.defaultvalue;
scope.keyValue={text:scope.elementDefinition.defaultValue};
};
return textareaInputDir;
});
템플릿 HTML 보인다. 아래 예에서. 내 지시어에 ng-change
이벤트를 추가하려고했습니다. 컨트롤러에 someMethod
을 정의하려고합니다. testCtrl
하지만이 이벤트는 템플릿의 루트 요소 (div입니다)에 첨부됩니다. 그래서 그것은 말이되지 않습니다. 왜냐하면 텍스트가 텍스트 영역에서 변경되었을 때 루트 요소는 그것을 알 수 없기 때문입니다. 그래서 지시문에 정의 된 모든 이벤트를 ng-change
, ng-click
등과 같이 템플릿의 자식 요소 textarea
에 연결할 수 있습니다. 그것을 만들 수있는 방법이 있습니까? 감사.
<form ng-controller='testCtrl'>
<textarea-Input label="Project Description" isShow="true"
isRequired="true" isDisabled="false" ng-change="someMethod()" ng-click="someClick()"></textarea-Input>
</form>
작업 볼 충분해야한다'당신의 NG-변화가 그들 모두를 캡처 속성인가?'나는 콘텐츠를 변경하면 실제로'NG-change'가 전혀 작동하지 않습니다 텍스트 영역. –
좋아요, 텍스트 영역에 연결하는 것이 아무것도 없으므로 말이 아닙니다. 이 답변에서 2 개의 링크를 살펴보십시오. –