2016-06-23 5 views
2

console.log myobject를 시도하고 있는데 계속 정의되지 않습니다. $ scope.watch와 $ attrs. $ observe를 사용해 보았습니다. 누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까? 여기 구성 요소 컨트롤러에서 바인딩 변수에 액세스

는 HTML 여기

<my-component some-data="$ctrl.data"></my-component> 

구성 요소 및 컨트롤러 내가 needThisStuff은 $ 시계를 사용하거나 $ 관찰하거나 다른 작업에 액세스 할 수있는 방법을

module.component('myComponent', { 
bindings: { 
    needThisStuff: '<someData' 
}, 
controller: Ctrl, 
templateUrl: 
    requirejs.toUrl('path/to/templ.html') 
}); 

function Ctrl(){ 
var self = this; 
console.log(self.needThisStuff); 
} 

은, 내가 사용하고 각 1.5

+0

'$ ctrl.data '설정 방법을 보여줍니다. 아마도 이것이 문제 일 것입니다. 구성 요소 코드가 정확합니다. – dfsq

+0

$ ctrl.data는 다른 구성 요소 컨트롤러 내의 객체입니다. –

+0

바인딩 데이터 = $ ctrl에 전달하면 console.log (self.data)를 수행하고 $ ctrl 객체 전체를 볼 수 있지만 data = $ ctrl.data 일 때 그것은 정의되지 않는다. –

답변

2

구성 요소가로드 되 자마자 console.log이 발생하기 때문에 객체가 정의되지 않았 음을 확신합니다. 데이터가 아직 반환되지 않았으므로 여전히 undefined입니다.

이것을 테스트하는 기본적인 방법으로 console.log를 테스트하기 위해 $timeout에 랩핑 할 수 있습니다.

이 문제를 해결하려면 각도 구성 요소 수명주기 후크을 사용하십시오. 당신의 Ctrl가 이런 식으로 변경 :

function Ctrl { 
    var self = this; 
    this.$onChanges = function(changesObj) { 
     console.log(changesObj.needThisStuff); 
    } 
} 

$onChanges은 단방향 바인딩이 업데이트 될 때마다 호출되고,이 경우에 needThisStuff 변수이다.

관련 문제