Bos*_*ohn 10 javascript handlebars.js ember.js ember-router
我的理解是,当我跑
App.CheeseController = Ember.Controller.extend({ type:"brie"});
Run Code Online (Sandbox Code Playgroud)
CheeseController 创建一个类,当我激活Cheese路由时,会创建该类的一个实例,这是我在我的车把模板中与控制器交谈时实际触摸的内容.
是否可以从javascript控制台(或从我的程序中)直接访问该实例化对象?更一般地说,Ember自动生成的物体在哪里?
Mik*_*tti 20
创建了一个类CheeseController,当我激活Cheese路由时,会创建该类的一个实例,这是我在我的车把模板中与控制器交谈时实际触摸的内容.
是的,这正是发生的事情.Ember创建App.CheeseController的单例实例,并在渲染手柄模板时将其作为上下文提供.
是否可以从javascript控制台中直接访问该实例化对象
是.从javascript控制台执行此操作的最佳方法是使用{{debugger}}模板中的把手帮助程序.这将在模板的上下文中打开JS调试控制台.
<script type="text/x-handlebars" data-template-name="cheese">
{{debugger}}
</script>
Run Code Online (Sandbox Code Playgroud)
打开调试器后,您可以访问实例化的控制器单例this,因此this.toString()应返回类似的内容<App.CheeseController:ember225>.
(或从我的程序内)?
取决于您的计划的哪个部分
this.controllerFor('cheese')needs: ['cheese']则App.CheeseController可以通过该属性从其他控制器访问该单例controllers.cheese.请参阅自动合成控制器的"需求"依赖项needs数组从模板控制器声明依赖关系,然后在模板中,控制器位于:{{controllers.cheese}}也可以通过ember容器访问cheeseController实例,但请不要.容器不是公共API.最近对Ember的更新使得访问它有点尴尬.这是因为使用全局常量来访问实例会破坏封装,虽然这对于控制台来说很好,但应该在应用程序代码中避免使用它.有关更多详细信息,请参阅App.container并非旨在成为公共API
更一般地说,Ember自动生成的物体在哪里?内部ember缓存容器中的控制器单例.当然它不是公共API的一部分,但是如果你对内部工作原理感到好奇,请查看container_test.js以及 Ember.Container的用途是什么
| 归档时间: |
|
| 查看次数: |
6273 次 |
| 最近记录: |