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
Templates EmberJS加载子状态:它使用什么逻辑爬升路由层次结构来查找加载模板?_Templates_Ember.js_Promise - Fatal编程技术网

Templates EmberJS加载子状态:它使用什么逻辑爬升路由层次结构来查找加载模板?

Templates EmberJS加载子状态:它使用什么逻辑爬升路由层次结构来查找加载模板?,templates,ember.js,promise,Templates,Ember.js,Promise,我正试着把我的头绕在余烬的加载子状态上。根据指南 …解析模型时将显示加载子状态,如果当前路由不存在加载模板,它将爬升路由层次结构,直到找到“加载”模板。所以我定义了一个“加载”模板,但它并不总是显示 这里有一个例子: 首先,当页面加载时,加载模板即使在解析ApplicationRoute的模型时也不会显示。然后,如果您转到“books”,将显示加载模板。因此,从“索引”到“书籍”将始终显示加载模板。但是他们去一本特定的“书”(例如,我的例子中的三只小猪)并没有显示加载模板。最后,从“book

我正试着把我的头绕在余烬的加载子状态上。根据指南

…解析模型时将显示加载子状态,如果当前路由不存在加载模板,它将爬升路由层次结构,直到找到“加载”模板。所以我定义了一个“加载”模板,但它并不总是显示

这里有一个例子:


首先,当页面加载时,加载模板即使在解析ApplicationRoute的模型时也不会显示。然后,如果您转到“books”,将显示加载模板。因此,从“索引”到“书籍”将始终显示加载模板。但是他们去一本特定的“书”(例如,我的例子中的三只小猪)并没有显示加载模板。最后,从“books”转到“book”不会显示加载模板,即使从“index”转到“books”也会显示。我无法理解这一切。Ember使用什么逻辑爬升层次结构以显示加载模板?

与加载相关的有两个不同的方面。装载路线与装载动作

每个至少有一个子资源(包括根,又名应用程序路由)都有一个加载路由。除非父资源已经呈现,否则余烬不会到达加载路径。这意味着它对第一次加载不太有用,而对转换更有用

不用担心,有加载操作!每当一个模型钩子需要一段时间来解析时,它都会向该路由发送一个动作,该动作将遍历路由器直到处理完毕(或者如果处理它,则返回true,这将向树上发送)。这对于魔法加载或首次加载非常有用。请记住(我在本例中展示了这一点,如果您不在特定的路由上处理加载操作,它将被传递给应用程序)

现在,您可以将其破解到应用程序路径中的另一个位置,因为这是一个只加载一次的特殊路径。如果一开始你有一个长时间的加载应用程序,这两者的混合通常是最好的方案

从出口的角度考虑过渡是最容易的。要渲染的部分已暂停,因此要渲染到的出口将过渡到加载路径。一旦完成,它就会导航到图书索引

在下面的示例中,尝试单击cows。这是一个资源2深度,books会立即解析(中间的资源),但是转换在cows上暂停,因此我们的出口将呈现所有新的转换到加载路径

位于其自身资源中的各个加载路径需要先解析资源本身,然后才能点击其加载路径:


与加载相关的事情有两种。装载路线与装载动作

每个至少有一个子资源(包括根,又名应用程序路由)都有一个加载路由。除非父资源已经呈现,否则余烬不会到达加载路径。这意味着它对第一次加载不太有用,而对转换更有用

不用担心,有加载操作!每当一个模型钩子需要一段时间来解析时,它都会向该路由发送一个动作,该动作将遍历路由器直到处理完毕(或者如果处理它,则返回true,这将向树上发送)。这对于魔法加载或首次加载非常有用。请记住(我在本例中展示了这一点,如果您不在特定的路由上处理加载操作,它将被传递给应用程序)

现在,您可以将其破解到应用程序路径中的另一个位置,因为这是一个只加载一次的特殊路径。如果一开始你有一个长时间的加载应用程序,这两者的混合通常是最好的方案

从出口的角度考虑过渡是最容易的。要渲染的部分已暂停,因此要渲染到的出口将过渡到加载路径。一旦完成,它就会导航到图书索引

在下面的示例中,尝试单击cows。这是一个资源2深度,books会立即解析(中间的资源),但是转换在cows上暂停,因此我们的出口将呈现所有新的转换到加载路径

位于其自身资源中的各个加载路径需要先解析资源本身,然后才能点击其加载路径:


这很有趣。您添加了一个books/loading模板,因此当您从books.index转到book,反之亦然时,将呈现该模板。从索引转到books.index时,也会呈现books/loading。这一切现在都有意义了。在我的示例中,我没有定义books/loading模板,它在从index转到books.index时呈现根加载模板。为什么会这样?因为模型需要在books.index而不是books中解析,我认为不会呈现任何加载程序,因为books/index没有定义。使用白板会容易得多。这是最容易想到的意义上的出口。要在应用程序出口中呈现的部分被暂停,因此它呈现应用程序加载。一旦完成,它会导航到图书索引。这应该会显示类似的情况,试着点击奶牛。这是一个资源2深度,书籍现在可以立即解决,但是转换在奶牛身上被暂停了,所以我们要呈现所有新内容的出口变成了加载路线,很有趣。books现在会立即解析,所以我认为books模板会立即被渲染,然后寻找books/loading模板以放置到books outlet中