最近,我不得不将所有路线都转换为深层嵌套的版本。例如:pages.page
成为了books.book.pages.page
。对于我正在做的某些链接而言,这是必要的。问题是我有一个控制器声明需要另一个控制器。具体来说,它需要book
控制器。但是现在book
控制器就是books.book
控制器。由于此代码不再起作用,因此出现了一个问题:
this.get('controllers.books.book');
现在,它认为这book
只是books
控制器的一个属性,而实际上,它全都是一个属性。我该如何解决这个问题?到目前为止,我已经尝试了以下方法,但都无法正常工作:
this.get('controllers').get('books.book');
this.get('controllers.`books.book`');
this.get("controllers.'books.book'");
编辑:我还应该指出的是,打电话this.get('controllers').needs
给我的数组:['application', 'books.book']
。
this.get('controllers.booksBook')
将工作。
因为Ember在不同地方使用了几种不同的命名约定,所以只要在应用程序容器中注册了对象,其名称就会被规范化。这样可以确保不同的查找格式始终以相同的方式解析。因此,您可以使用其他查找格式来明确引用属性路径中的控制器。
规范化将点路径和带下划线的字符串转换为驼峰式。保留正斜杠。您可以查看其中的测试以packages/ember-application/tests/system/dependency_injection/normalization_test.js
获取更多详细信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句