- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是 fiddle 。
http://jsfiddle.net/inconduit/hf7XM/10/
重现问题的步骤:
看来controllerFor()
返回的 Controller 引用实际上并不是PostsIndexController
?这是为什么?
我在路由的 setupController()
Hook 中破解了它,以在应用程序上设置对该 Controller 的全局引用,并且当我将该引用上的内容设置为 中的新数组时emptyList2()
,模板中的列表正确清除。
我使用controllerFor()
错误吗?或者误解了它返回的内容?这是范围界定问题吗?请帮帮我。
App.PostsIndexRoute = Ember.Route.extend({
setupController : function(controller,model) {
controller.set('content',['one','two','three']);
App.postsIndexController = controller;
}
});
// receives the {{action}} from the template
App.PostsController = Ember.Controller.extend({
emptyList : function() {
this.controllerFor('postsIndex').set('content',Ember.A());
},
emptyList2 : function() {
App.postsIndexController.set('content',Ember.A());
}
});
最佳答案
tldr:将 controllerFor('postsIndex')
替换为 controllerFor('posts.index')
emptyList2 fx 正在工作,因为您将 App.postsIndexController
常量设置为传递给 setupController
的任何 Controller 实例。
我认为比如何解决这个问题更重要的是如何调试这些问题。这是我所做的:
在运行 JS fiddle 时打开 JS 控制台。单击帖子链接后但在尝试清空列表之前,我运行了以下命令:
Em.keys(App.__container__.cache.dict)
["application:main", "router:main", "route:application", "route:index", "controller:application", "template:application", "controller:index", "template:index", "route:posts", "route:posts.index", "controller:posts", "template:posts", "controller:posts.index", "template:posts.index"]
然后在单击emptyList操作后,再次尝试:
Em.keys(App.__container__.cache.dict)
["application:main", "router:main", "route:application", "route:index", "controller:application", "template:application", "controller:index", "template:index", "route:posts", "route:posts.index", "controller:posts", "template:posts", "controller:posts.index", "template:posts.index", "controller:postsIndex"]
看看现在有 2 个 App.PostsIndexController 的缓存实例:controller:postsIndex 和controller:posts.index
然后我向 jsFiddle 添加了一些 console.log 以查看引用了哪些实例。从那里开始修复就很容易了。由于 Ember 为每个对象添加了 toString() 方法,因此很容易看出发生了什么。例如:
controllerFor("postsIndex").toString()
<App.PostsIndexController:ember218>
此处更新了 fiddle :http://jsfiddle.net/mgrassotti/Aa2WX/2/
关于ember.js - 在 ember v2 路由器中,为什么controllerFor() 不提供对此 Controller 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385429/
在我的 ember 1.10.1 应用程序的一个 View 中,当我尝试获取该特定 View 的 Controller 时,出现错误“this.controllerFor()”不是函数。我的 View
我在使用controllerFor时遇到问题,并且发现了此pull请求,其中描述了不推荐使用的controllerFor: https://github.com/emberjs/ember.js/pu
我在我的应用程序中设置了一组嵌套资源。我需要为我的一些路线使用 beforeModel 和 afterModel Hook 。但是,当尝试调用函数或获取另一个 Controller 的属性时,我收到一
我是一名优秀的程序员,十分优秀!