2013-03-13 75 views
0

所以,我想获得一个简单的propertyBinding来使用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')); 
    } 
}); 

它就这么简单,它只是不起作用。真的很奇怪,如果我创建另一个测试控制器(而不是扩展它),例如

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

属性绑定突然间起作用。但我就是不能让它与索引控制器 工作(在情况下,信息是必要的,在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 2013-03-17 16:14:47