如何在另一个组件中使用来自组件的表单

Posted

技术标签:

【中文标题】如何在另一个组件中使用来自组件的表单【英文标题】:How to use a form from a component in another component 【发布时间】:2017-03-09 19:26:33 【问题描述】:

我有一个表单控制器和一个表格控制器,在我的表格中我有一个编辑按钮,当我点击这个按钮时,我的弹出窗口需要显示并更新我的表格中的用户。我该怎么做?我如何在我的表格组件中使用他的组件中的表单?

【问题讨论】:

【参考方案1】:

您正在寻找的是一种在控制器(表控制器和表单控制器)之间传递数据的方式。在这种情况下,您需要引入一个服务,将单击项目的值保留在表格列表中——该服务应该同时具有“set”方法和“get”方法。您的表控制器设置该值,您的表单控制器可以简单地读取该值并根据该值填充其字段。

在您的表控制器中的某处:

$scope.selectItem = function (item)
        console.log("Selected Item ", item);
        //we indicate to our ItemsService that this is the current item
        ItemsService.setSelectedItem(item);        
        //switch to item-view form (which will then use the ItemsService to get the selected item)
        $location.path("/form");
      ;

表单控制器中的某处:

var selectedItem = ItemsService.getSelectedItem();
      console.log("Got Item Selected From List :: ", selectedItem, "");
      //this is how we load it on the "details form"
      $scope.formData = selectedItem;

对于大多数应用程序来说,这是一个相当常见的用例——我创建了一个基本的 AngularJS 项目来演示这一点——你可以尝试关注它,看看是否如此。见我的angularjs-list-details-tutorial。

我希望这会有所帮助。

【讨论】:

以及如何在表格组件中打开表单? 你使用 $location 服务并指定路径——或者如果你想要一个模态表单,那么你可以看看这个要点:gist.github.com/rnkoaa/8333940 我已经有一个表单,我想从组件中使用这个表单。 所以表单在模板上 - 你有这个模板的控制器吗?您可以使用相同的方法 - 使用 $scope 引用表单 - 我认为如果您编辑问题并包含代码会更有帮助。告诉我们你做了什么。

以上是关于如何在另一个组件中使用来自组件的表单的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个组件中获取指令/组件实例?

如何在服务中初始化响应式表单而不是注入到组件中

使用来自单独组件的按钮禁用表单

如何在父组件中使用来自 Vue.js 子组件的数据?

如何在另一个站点中使用 NUXT 组件

如何在另一个 React 组件中正确使用 TabNavigator