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
Data binding 查看属性返回';未定义';当遵循链接到路线时_Data Binding_Ember.js_Views - Fatal编程技术网

Data binding 查看属性返回';未定义';当遵循链接到路线时

Data binding 查看属性返回';未定义';当遵循链接到路线时,data-binding,ember.js,views,Data Binding,Ember.js,Views,我有一个自定义视图,用于在页面上显示当前模型导航的面包屑,以下是它在我的模板(即单一模型模板)中的外观: 下面是呈现数据的面包屑模板: <ul class="breadcrumb"> {{#if view.penultimate}} <li>{{#linkTo group view.penultimate}}Back{{/linkTo}}</li> {{/if}} <li>{{view.last.name}}</

我有一个自定义视图,用于在页面上显示当前模型导航的面包屑,以下是它在我的模板(即单一模型模板)中的外观:

下面是呈现数据的面包屑模板:

 <ul class="breadcrumb">
   {{#if view.penultimate}}
     <li>{{#linkTo group view.penultimate}}Back{{/linkTo}}</li>
   {{/if}}
   <li>{{view.last.name}}</li>
 </ul>
由于某些原因,内容未定义,但我不确定原因。有什么想法吗

编辑: 嗯,这里有一个例子。然而,在这个例子中,它是工作的,这使我想到其他的东西可能是问题所在。基本上,每次你在我的应用程序中点击面包屑链接时,路由器都会根据ID进行
find
,该ID会发出ajax调用,以查找该路由的当前组和所有子组。可能视图试图在从服务器返回数据之前拉出
子组
。。。有没有办法检查/防止这种情况

编辑: 这可能会传达出我想做的更多一点-

编辑:
好的,问题肯定是视图在模型中ajax请求完成之前正在渲染和调用倒数第二个
。话虽如此,在模型的ajax请求完成后,确保其呈现的最佳方法是什么?

仔细查看您的用例后,可能会有帮助的是查看新的路由器外观。它还没有广泛的文档记录,应该很快会以博客的形式出现在ember网站上,但它已经被合并到ember最新版本中,因此您可以访问新的实现。尤其是
beforeModel
afterModel
钩子的接缝与您相关

例如,在
afterModel
hook中,您可以执行以下操作:

App.PostsIndexRoute = Ember.Route.extend({
  afterModel: function(posts, transition) {
    if (posts.length === 1) {
      this.transitionTo('post.show', posts[0]);
    }
  }
});

希望能有所帮助。

仔细查看您的用例后,可能会有帮助的是查看新的路由器升级版。它还没有广泛的文档记录,应该很快会以博客的形式出现在ember网站上,但它已经被合并到ember最新版本中,因此您可以访问新的实现。尤其是
beforeModel
afterModel
钩子的接缝与您相关

例如,在
afterModel
hook中,您可以执行以下操作:

App.PostsIndexRoute = Ember.Route.extend({
  afterModel: function(posts, transition) {
    if (posts.length === 1) {
      this.transitionTo('post.show', posts[0]);
    }
  }
});

希望有帮助。

你能把一个例子放在jsbin里,帮助会更容易…是的,我会拍一个例子。你能把一个例子放在jsbin里,帮助会更容易…是的,我会拍一个例子。有趣的是,原来这是一个带有
链接到
的bug,没有等待承诺完成。感谢你给我指点发行说明!有趣的是,原来这是一个带有
linkTo
的bug,没有等待承诺完成。感谢你给我指点发行说明!
Uncaught TypeError: Cannot read property 'length' of undefined 
App.PostsIndexRoute = Ember.Route.extend({
  afterModel: function(posts, transition) {
    if (posts.length === 1) {
      this.transitionTo('post.show', posts[0]);
    }
  }
});