작성해야하는 상용구 코드를 줄이기위한 지시문을 작성하려고합니다.AngularJS가 지시문을 작성한 다음 다른 지시문을 사용합니다.
인라인 편집을 위해 각도 xeditable 지정 문을 사용하고 있지만 지시문에서 xeditable 지정 문 특성을 추가해도 작동하지 않습니다.
내가 작동하지 않는다고 말하면 일반적으로 요소를 클릭하면 입력 상자가 나타나고 요소를 클릭하면 아무 일도 일어나지 않습니다.
Glenn.directive('edit', function() {
return {
restrict: 'A',
template: '{{ content.' + 'ParamData' + '.data }}',
scope: {
ParamData: '@edit'
},
link: function(scope, element, attrs) {
element.attr('editable-text', 'content.' + attrs.edit + '.data');
element.attr('onbeforesave', 'update($data, content.' + attrs.edit +'.id');
}
}
});
내 첫 번째 문제는 내 안에 있기 때문에 xeditable 지시문이 작동하지 않는다는 것입니다. anglejs 지시문을 작성하는 것이 처음이지만, 컴파일되는 방식과 관련이 있는지 궁금합니다.
두 번째 문제점은 템플릿 때문입니다. 내 템플릿 그냥이
template: '{{ ParamData }}'
과 같은 경우는 정확한 데이터를 출력,하지만 난 그게 범위의 데이터를 참조하는 다른 조각없이 작동 할 수 없습니다.
또한는, 여기에보기는 지시 여기
<h2 edit="portrait_description_title"></h2>
그리고를 사용 모습입니다 것은 내가 보일러 코드를 줄일 수있는 지시어를 사용하지 않은 경우처럼 보일 것 인 것이다
<h1 editable-text="content.portrait_description_title.data" onbeforesave="update($data, content.portrait_description_title.id)">
{{ content.portrait_description_title.data }}
</h1>
어떤 조언을 주셔서 감사합니다!
범위 및 전환에 대해 읽어야합니다. 'scope : {}'를 지정하면 새로운 범위가 생성되기 때문에 부모 범위에 액세스 할 수 없습니다. 자식 범위를 만들지 말고, ParamData처럼 필요한 요소를 전달하십시오. transclusion을 사용하여 지시문을 중첩합니다 (예 : ng-repeat 작동 방식과 유사). – Bill
코드를 다시 컴파일해야하거나 (위에서 언급 한 것처럼) 중첩을 사용하면 컴파일러에서 중첩 된 지시문 컴파일을 처리해야합니다. –