要调用setupController或模型挂钩

射线

我有以下路线和控制器:

var App = App || Ember.Application.create();

App.Router.map(function(){
  this.resource('posts', function(){
    this.route('new', { path: '/new'});
  });
});

App.PostsRoute = Ember.Route.extend({
  model: function () {
    return $.getJSON('/api/posts');
  },
  setupController: function(controller, model) {
    $.getJSON('/api/posts').done(function(data) {
      controller.set('model', data);
    });
});

App.PostsNewController = Ember.Controller.extend({
  actions: {
    addPost: function (file) {
      var self = this;
      $.ajax({
        type: 'POST',
        url: '/api/posts',
        data : {
         id: this.get('id'),
         title: this.get('title'),
         author: this.get('author'),
         contents: this.get('contents')
        }
      }).done(function(res){
        self.transitionToRoute('posts');
      });
    }
  }
});

我想做的是在用户成功保存新帖子后调用“帖子”路由以刷新浏览器中的帖子列表。

因此,我使用“ self.transitionToRoute('posts')”在PostsRou​​te中调用模型挂钩或setupController,但从未调用过这两种方法。

我究竟做错了什么?提前致谢。

劲派2k

由于您已经在发布路线中,因此Ember不需要重新获取模型。另外,控制器已经设置好,并且已经有了模型,因此也没有理由调用它。本质上是避免浪费电话。就个人而言,我建议您也避免添加回调(除非您期望其他用户发布其他信息)。

示例1:只需将新帖子添加到当前帖子列表中

needs: ['posts'],
actions:{
  addPost: function (file) {
    var self = this,
        data = {
          id: this.get('id'),
          title: this.get('title'),
          author: this.get('author'),
          contents: this.get('contents')
        };
    $.ajax({
      type: 'POST',
      url: '/api/posts',
      data : data
    }).done(function(res){
      // just push the new data
      self.get('controllers.posts').pushObject(data);
      self.transitionToRoute('posts');
    });
  }
}

示例2:通过发送操作再次提取所有帖子,该气泡将上升到帖子路线

actions:{
  addPost: function (file) {
    var self = this,
        data = {
          id: this.get('id'),
          title: this.get('title'),
          author: this.get('author'),
          contents: this.get('contents')
        };
    $.ajax({
      type: 'POST',
      url: '/api/posts',
      data : data
    }).done(function(res){
      self.send('updatePosts');
      self.transitionToRoute('posts');
    });
  }
}

App.PostsRoute = Ember.Route.extend({
  model: function () {
    return $.getJSON('/api/posts');
  },
  actions: {
    updatePosts: function(){
      var controller = this.get('controller');
      this.model().then(function(data){
        controller.set('model', data);
      });
    }
  }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Ember.js中渲染模板并调用模型挂钩

来自分类Dev

Ember.js-调用父模型挂钩以加载子数据

来自分类Dev

Ember.js-调用父模型挂钩来为子加载数据

来自分类Dev

pyinstaller挂钩从未调用

来自分类Dev

Prestashop模板挂钩调用

来自分类Dev

路由中的Ember setupController钩子使模型与模板断开连接

来自分类Dev

路由中的Ember setupController钩子使模型与模板断开连接

来自分类Dev

从Route内的Ember setupController调用控制器函数

来自分类Dev

从Route内的Ember setupController调用控制器函数

来自分类Dev

在PHP中挂钩变量调用

来自分类Dev

了解如何调用WordPress挂钩

来自分类Dev

useDarkMode挂钩多次调用onClick

来自分类Dev

为什么要调用?

来自分类Dev

从beforeSave模型挂钩访问请求标头

来自分类Dev

在模型挂钩中获取异步hasMany关系

来自分类Dev

Ember应用套件和测试模型挂钩

来自分类Dev

测试链接/模型挂钩的两侧

来自分类Dev

在模型挂钩中获取异步hasMany关系

来自分类Dev

尝试使用特征挂钩模型“更新”事件

来自分类Dev

挂钩错误:在Windows上使用NextJS或ReactJS的无效挂钩调用

来自分类Dev

此Ember.js的参考指南是如何使用arraycontroller引导setupController多个模型

来自分类Dev

灰烬简单身份验证-在身份验证承诺解决之前调用已身份验证的路由模型挂钩

来自分类Dev

SLC环回:从模型挂钩中使用模型实例

来自分类Dev

在Sequelize模型挂钩功能中访问其他模型

来自分类Dev

灰烬:模型未由模型挂钩路径中的商店设置

来自分类Dev

何时调用Promise.then()挂钩?

来自分类Dev

onOptionsItemSelected挂钩因错误片段而被调用

来自分类Dev

挂钩两次之前被调用

来自分类Dev

挂钩Python中的每个函数调用

Related 相关文章

热门标签

归档