다른 템플리트에서 동일한 템플리트를 재사용 할 수 있도록 템플리트에 사용 된 모델의 별명을 지정하려고합니다. 예를 들어, 다음 모델의 경우 :ngtemplate에서 모델 별명 지정
member = {
name: "Member1",
children:[
{
name:"Child1"
},
{
name:"Child2"
}
]
}
"구성원"과 "자식"모두 "이름"속성을가집니다. 그래서이 "name"속성을 다루는 하나의 템플릿을 만들고 싶습니다.
:app.directive('member', function(){
return {
restrict: 'A',
template: "{{prefix}}<input type='text' ng-model='member.name'>",
scope: {
member: "="
}
};
});
다음은이 지침의 사용이다 :
Bind ngInclude to different models
내가 같은 지침을 작성, 제안으로 : 이 질문의 도움으로이를 달성 할 수 있었다
<div ng-controller="MemberCtrl">
{{member | json}}
<div member="member"></div>
<div member="member.children[0]"></div>
</div>
내 지시어에 "범위"를 사용하고 있기 때문에 템플릿 재사용을 달성 할 수 있었지만, 컨트롤러 범위의 모든 속성에 액세스 할 수없는 범위입니다. 따라서 컨트롤러의 경우 :
app.controller('MemberCtrl', function($scope){
$scope.member = {
name: "Member1",
children:[
{
name:"Child1"
},
{
name:"Child2"
}
]
};
$scope.prefix = "Mr.";
});
지시문 안의 템플릿은 "접두어"속성에 액세스 할 수 없습니다.
http://jsfiddle.net/vaibhavgupta007/mVBaC/1/
는 어떤이의 문제가 될 수있다 : 다음은 jsfiddle입니까?
나는 또한 접두사에 액세스 할 수 $ 부모를 사용할 수 있습니다
편집. 하지만이 깨끗한 접근 방식입니다.
예이 방법은 한 가지 방법이지만 컨트롤러 범위를 지시문에 표시하여 일부 도우미 기능에도 액세스 할 수있는 방법은 무엇입니까? 예를 들어 컨트롤러에 범위에 "joinNameWithPrefix"라는 함수가 있으면 지시문에서 해당 함수에 액세스 할 수 없습니다. – Vaibhav
그런 경우 지시어 정의 객체에서 '범위'를 모두 제외 할 수 있으며 지시문은 격리 된 범위를 만들지 않지만 대신 기본적으로 부모 범위를 사용합니다. – Stewie
하지만 별칭을 얻을 수는 없습니다. 내게 닭고기와 계란 문제 같아 보인다. :) 나는 aliasing이 직각 방향으로 angularjs에서 지원되지 않는다고 생각한다. 템플릿에 $ parent를 사용해야합니다. – Vaibhav