2013-03-13 3 views
0

그래서, 나는 간단한 속성 바인딩을 emberjs와 함께 사용하려고합니다. 특히, 특정 상황에서 업데이트 된 콘텐트 속성이있는 컨트롤러와 일부 차트를 그리는 콘텐트 배열이 필요한보기가 있습니다.propertyBinding 컨트롤러 -보기

나는 가장 기본적인 예를 만들었지 만 제대로 작동하지 않는 것 같습니다. 간단한 예는 다음과 같습니다.

Appname.IndexController = Ember.Controller.extend({ 
    value: 'bla' 
}); 

Appname.IndexView = Ember.View.extend({ 
    templateName: 'Index', 
    propertyBinding: 'Appname.IndexController.value', 
    didInsertElement: function() { 
     console.log('Indexview'); 
     console.log(this.get('property')); 
    } 
}); 

매우 간단하며 작동하지 않습니다. 비록 내가 또 다른 testcontroller (오히려 그것을 확장하는 것)를 만들면 정말 이상한 일이있다.

Appname.TestController = Ember.Controller.create({ 
    value: 'jpopo' 
}); 

갑자기 속성 바인딩이 작동합니다. 하지만 난 그냥 IndexController 함께 작동하도록 얻을 수 없다 (그리고 정보가 필요한 경우, 콘센트가있는 Applicaton.hbs에 있음) 어떤 도움을 주셔서 감사합니다.

답변

1

바인딩은 객체가 아니라 인스턴스화 된 객체에서 작동합니다. 정의.

Appname.IndexController은 인스턴스가 아닌 컨트롤러 정의입니다. 당신이 묶고 싶은 것이 아닙니다. Ember.js 응용 프로그램은 IndexController의 인스턴스를 만들고 바인딩하려는 인스턴스를 만듭니다.

보기에서 실제 컨트롤러 인스턴스에 액세스하려면 controller을 사용하십시오.

Appname.IndexView = Ember.View.extend({ 
    templateName: 'index', 
    propertyBinding: 'controller.value', 
    didInsertElement: function() { 
    console.log(this.get('property')); 
    } 
}); 

물론 이것은 Ember.js conventions을 따르는 경우입니다.

+0

아직 답변을 표시하지 않아 죄송합니다. 진짜 빨리 시도해 보니 효과가 없었지만 제대로 볼 시간이 없었습니다. 곧 그렇게 할 것입니다. 그 동안 이미 올바른 방향으로 나를 밀어 줘서 고마워. – Markus