1
격리 범위에서 변수를 설정하려고하지만 분리 된 범위에서 링크 된 함수에서 설정 한 변수에 액세스 할 수 없습니다. 수 액세스 컨트롤러의 변수 . http://plnkr.co/edit/lUBvIkF4fKXkEgujJpuU?p=preview링크 범위에서 격리 범위의 범위 변수를 설정하는 방법
격리 범위에서 변수를 설정하려고하지만 분리 된 범위에서 링크 된 함수에서 설정 한 변수에 액세스 할 수 없습니다. 수 액세스 컨트롤러의 변수 . http://plnkr.co/edit/lUBvIkF4fKXkEgujJpuU?p=preview링크 범위에서 격리 범위의 범위 변수를 설정하는 방법
그것의 모든 그것이 있어야로 작동 :
app.directive('myDir', function($timeout) {
return {
restrict: 'A',
scope: {
'propVar': '='
},
link: function(scope, elem) {
console.log(elem)
scope.linkVar = 'It works!'
console.log(scope);
},
}
})
은 내가 무슨 뜻인지 보여 plunker를 만들었습니다.
1) 'propVar' : '='
을 정의하면 지시문 요소의 속성이 prop-var
임을 의미합니다. 그렇지 않다. prop
특성을 사용하려면이 방법으로 격리 된 범위를 정의해야합니다 ('propVar' : '=prop'
).
2) 지시문의 하위 요소는 지시문 범위가 아닌 컨트롤러 범위에 바인딩됩니다.
app.directive('myDir', function() {
return {
restrict: 'A',
template: '<div><p>linkVar: {{ linkVar }}</p><p>propVar: {{ propVar }}</p><p>foo: {{ foo }}</p><button ng-click="foo=\'directive sucks\'">press me</button></div>',
scope: {
propVar: '=prop'
},
link: function(scope, elem) {
console.log(elem)
scope.linkVar = 'It works!'
console.log(scope);
},
}
})
수정 된 PLUNKR 참조 : 당신은 자식 요소가 지침의 일부가 될하려는 경우 당신은 당신의 지시에 템플릿을 사용할 수 있습니다
http://plnkr.co/edit/MHXXkmPdtfAUqtre4Fbg?p=preview
그래,하지만 문제는 내가 원하지 않는 것입니다 템플릿을 사용합니다. 내 div의 innerHTML에 물건에 대한 고립 된 범위를 원한다. 가능한가? – syabro
흠. 그것은 작은 패치와 함께 작동합니다 : template : function (tElement, tAttrs) {return tElement [0] .innerHTML; } 답변을 주셔서 감사합니다;) – syabro
@syabro 멋진 솔루션! :) – michael