Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Javascript 激活路线时,未执行余烬模型功能_Javascript_Ember.js - Fatal编程技术网

Javascript 激活路线时,未执行余烬模型功能

Javascript 激活路线时,未执行余烬模型功能,javascript,ember.js,Javascript,Ember.js,我有一条余烬之路,我已经把它剥去了 App.MyRoute = Ember.Route.extend({ model: function(params){ console.log("model function executing"); Ember.Object.create() }, setupController: function(controller){ console.log("setupController fu

我有一条余烬之路,我已经把它剥去了

App.MyRoute = Ember.Route.extend({
    model: function(params){
        console.log("model function executing");
        Ember.Object.create()
    },
    setupController: function(controller){
        console.log("setupController function executed");
    }
});
当我切换到MyRoute时,会执行setupController,但填充模型的函数永远不会执行。模型最终只是在
{{link myRoute msg}
标记中传递的
msg
对象

在切换到该路径时,我需要加载/计算模型的某些部分。为此,我需要能够成功地更新模型,或者需要从setupController函数中访问链接中传递的参数。关于如何最好地实现这一目标的建议

编辑

为了解决这个问题,我创建了一个完整的最小示例来产生这种行为:

我的html是:

<html>
  <head>
    <title> This is my Page! </title> 

    <script src="js/libs/jquery-1.8.2.js"></script>
    <script src="js/libs/handlebars-1.0.rc.1.js"></script>
    <script src="js/libs/ember.js"></script>
    <script src="js/app.js"></script>
  </head>

  <body>
    <script type="text/x-handlebars">
      {{#linkTo example App.thing}}<p> go </p>{{/linkTo}}
      <div>
        {{outlet}}
      </div>
    </script>

    <script type="text/x-handlebars" data-template-name="index">
      <p> Initial Text </p>
    </script>

    <script type="text/x-handlebars" data-template-name="example">
      <p> After change </p>
    </script>
  </body>
</html>

单击示例管线的链接时,“in-setupController”会打印,但“in-model function”不会打印

它似乎对我有效,完全没有理由不起作用:

您确定使用的是EMBER 1.0.0-PRE.4,而不是EMBER 1.0.0-PRE.3吗

App.MyRoute = Ember.Route.extend({
    model: function(params){
        console.log("model function executing");
        Ember.Object.create()
    },
    setupController: function(controller){
        console.log("setupController function executed");
    }
});

linkTo
在幕后使用
transitionTo
。无论何时使用
transitionTo
,我们实际上直接提供上下文/模型,因此不会调用路由上的
model
方法。在上面的示例中,您有
{{{#链接到示例App.thing}
。因为我们已经知道上下文是
App.thing
,所以没有理由触发
model
方法。当我们不知道模型是什么时,我们只在路线上调用
model
。这种情况主要发生在通过URL更改输入时。

我正在运行jquery-1.8.2.js handlebar-1.0.rc.1.js和ember-1.0.0-pre.4.jsI已经有了一个完整的功能应用程序,现在可以显示这种行为了。谢谢,这或多或少是有意义的。回顾文档,我发现我还可以将setupController定义为函数(controller,model),它将解决我的其他用例。这是否有点像是说,如果你知道网页的URL,你就不需要麻烦加载它,因为你必须已经知道那里有什么内容?知道一个url意味着你知道一些关于整个页面“模型”的信息,可能(通常)还有更多的信息。
App.MyRoute = Ember.Route.extend({
    model: function(params){
        console.log("model function executing");
        Ember.Object.create()
    },
    setupController: function(controller){
        console.log("setupController function executed");
    }
});