2014-09-24 55 views
1

我正在用d3和ember构建一个可视化应用程序。从Emeber中的视图访问控制器

在模板中我已经声明如下

{{view 'myview'}} 在那里我定义的函数呈现图表视图。 我想要使用观察属性在控制器中的数据更改上触发这些功能。 我知道所有视图都与它们所在的控制器具有相同的上下文。

我尝试this.controller.get('some_variable'); 输出未定义。 如何实现它?

回答

1

你需要使用到抢遥控器,this.get('controller.some_variable')

+0

哎...我做了同样的......看看这个jsbin我做了http://jsbin.com/fedak/3/edit .. 。如果我不使用this.get('controller.name')或this.get('controller.lname')并写入像this.get('context')或任何随机数字符串eg.alert('intialised')...'func'不会触发。似乎你必须访问init中的控制器才能使观察者工作。 – asdw 2014-09-25 09:17:02

+0

是的,我之前见过这个问题,它与Ember没有观察那些从未在其范围内访问的项目有关。我并不看好你的观点是什么,你的最终目标是什么,但即使只是在视图中显示这个项目,也会在它的范围内触发它。 http://jsbin.com/xojac/1/edit。虽然我个人认为这个例子是一个bug。 – Kingpin2k 2014-09-25 14:26:27

+0

嘿...谢谢你的回复......用例就是这样。 我正在制作一个使用d3js和ember的可视化应用程序。这是我想使用[http://bl.ocks.org/mbostock/4063530]的一些附加功能。我的设计就是这样。 1 - 来自后端的第一个查询数据 2-当您在控制器中收到set属性时。 3 - 该视图具有类似renderChart的功能,该功能可以观察属性的任何更改,并在属性更改时绘制图表。 4 - 当用户点击任何内部气泡...我想为他们创建单独的视图...就像一个选项卡......所以用户可以销毁。 – asdw 2014-09-26 06:36:47

相关问题