Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js Emberjs路由器:未在关联的控制器上定义视图属性_Ember.js_Ember Old Router - Fatal编程技术网

Ember.js Emberjs路由器:未在关联的控制器上定义视图属性

Ember.js Emberjs路由器:未在关联的控制器上定义视图属性,ember.js,ember-old-router,Ember.js,Ember Old Router,我正在尝试将我的应用程序移动到使用“outlets”的新Emberjs路由器组件 请参见参考文献:以及: 我如何理解这一点: 使用字符串连接插座时,会发生以下情况 Ember在应用程序上查找视图定义并实例化它 Ember在应用程序上查找控制器定义并创建其实例 将二者相互挂钩,如下所示:设置视图控制器属性和设置控制器视图属性 ---一直到最后一步都很有效。我似乎无法在控制器上设置view属性 请点击这里: 相关代码: 应用程序路由器 App.Router=Ember.Router.extend(

我正在尝试将我的应用程序移动到使用“outlets”的新Emberjs路由器组件

请参见参考文献:以及:

我如何理解这一点: 使用字符串连接插座时,会发生以下情况

  • Ember在应用程序上查找视图定义并实例化它
  • Ember在应用程序上查找控制器定义并创建其实例
  • 将二者相互挂钩,如下所示:设置视图控制器属性和设置控制器视图属性
  • ---一直到最后一步都很有效。我似乎无法在控制器上设置view属性

    请点击这里:

    相关代码:

    应用程序路由器

    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')