Ember.js Emberjs路由器:未在关联的控制器上定义视图属性
我正在尝试将我的应用程序移动到使用“outlets”的新Emberjs路由器组件 请参见参考文献:以及: 我如何理解这一点: 使用字符串连接插座时,会发生以下情况Ember.js Emberjs路由器:未在关联的控制器上定义视图属性,ember.js,ember-old-router,Ember.js,Ember Old Router,我正在尝试将我的应用程序移动到使用“outlets”的新Emberjs路由器组件 请参见参考文献:以及: 我如何理解这一点: 使用字符串连接插座时,会发生以下情况 Ember在应用程序上查找视图定义并实例化它 Ember在应用程序上查找控制器定义并创建其实例 将二者相互挂钩,如下所示:设置视图控制器属性和设置控制器视图属性 ---一直到最后一步都很有效。我似乎无法在控制器上设置view属性 请点击这里: 相关代码: 应用程序路由器 App.Router=Ember.Router.extend(
App.Router=Ember.Router.extend({
根:Ember.Route.extend({
状态1:Ember.Route.extend({
路由:'/state1',
连接插座:功能(路由器){
router.get('applicationController').connectOutlet('state1'))
}
})
})
});
控制器和视图
App.State1View=Ember.View.extend({
templateName:'state1',
提交:函数(){
this.get('controller').doLogView();
返回false;
}
});
App.State1Controller=Ember.Controller.extend({
doLogView:函数(){
log('获取控制器视图:');
console.log(this.get('view');
}
});
最后它返回一个大的fat空值
是我做错了什么,还是这就是我应该做的
顺便说一句:这是使用ember-1.0.pre.这是一种正常行为,因为控制器不必知道呈现其内容的视图。你会有一个依赖循环(和一个破碎的设计…) 依赖项遵循以下链:V->C->M
此外,控制器注入一次,每次显示时都会创建视图。这是一种正常行为,因为控制器不必知道呈现其内容的视图。你会有一个依赖循环(和一个破碎的设计…) 依赖项遵循以下链:V->C->M
此外,控制器只注入一次,每次显示时都会创建视图。Mike Aski认为控制器不应该知道视图是正确的 但是,当前的实现实际上在控制器上设置了视图,而不是您期望的控制器。在上面的示例中,
applicationController
的view
属性将设置为State1View
的实例
此处来自Ember来源的相关代码:
Mike Aski认为控制器不应该知道视图是正确的 但是,当前的实现实际上在控制器上设置了视图,而不是您期望的控制器。在上面的示例中,
applicationController
的view
属性将设置为State1View
的实例
此处来自Ember来源的相关代码:
因此,此语句“将控制器的view属性设置为新实例化的视图。”in完全错误?或者它是指ApplicationController?@oportocala,如您在此处所见:,
connectOutlets
将控制器设置为视图的上下文,但不将视图设置为控制器的属性。因此,此语句“将控制器的视图属性设置为新实例化的视图。“in是完全错误的?还是它指的是ApplicationController?@oportocala,正如您在这里看到的:,connectOutlets
将控制器设置为视图的上下文,但没有将视图设置为控制器的属性。感谢您的澄清。Mike Aski说的很有道理,你不应该尝试这样做,但如果你需要,你可以这样做:App.get('router.applicationController.view')
谢谢你的澄清。Mike Aski说的很有道理,你不应该尝试这样做,但如果你需要,你可以这样做:App.get('router.applicationController.view')