我正在以这种方式制作包含3个子组件的组件:
<header-component>
<side-component>
<main-component>
主要组成部分包含英雄列表。标头组件包含两个按钮,用于将主组件上的视图切换到列表或网格视图。
我现在遇到的问题是将数据从标头组件传递到主组件。因此,当我单击网格按钮时,主要内容上的视图应更改为网格视图,与行视图相同。
如何在角度1.5的子组件之间传递数据?
我建议您与Angular
2组件方法保持一致,并使用输入 / 输出方法。如果这样做,您将能够轻松迁移到Angular 2,因为组件在概念上是相同的(仅语法有所不同)。这就是您的操作方式。
因此,我们基本上希望头文件和主要组件与头文件共享状态,以便能够更改它。我们可以使用几种方法来使其工作,但是最简单的方法是利用中间父控制器属性。因此,假设父控制器(或组件)定义了view
要由标头(可以读取和修改)和主(可以读取)组件使用的此属性。
标头组件 :输入和输出。
这是简单的标头组件的外观:
.component('headerComponent', {
template: `
<h3>Header component</h3>
<a ng-class="{'btn-primary': $ctrl.view === 'list'}" ng-click="$ctrl.setView('list')">List</a>
<a ng-class="{'btn-primary': $ctrl.view === 'table'}" ng-click="$ctrl.setView('table')">Table</a>
`,
controller: function() {
this.setView = function(view) {
this.view = view
this.onViewChange({$event: {view: view}})
}
},
bindings: {
view: '<',
onViewChange: '&'
}
})
这里最重要的部分是绑定。使用view: '<'
我们指定的header
组件将能够读取外部内容并将其绑定为view
自己控制器的属性。使用onViewChange: '&'
组件定义的输出:用于通过其所需通知/更新外部世界的渠道。标头组件将通过此通道推送一些数据,但是它不知道父组件将使用它做什么,因此它不在乎。
所以这意味着header
控制器可以像
<header-component view="root.view" on-view-change="root.view = $event.view"></header-component>
主要组成部分 :输入。
主要组件更简单,只需定义接受的输入即可:
.component('mainComponent', {
template: `
<h4>Main component</h4>
Main view: {{ $ctrl.view }}
`,
bindings: {
view: '<'
}
})
最后,它们全部连接在一起:
<header-component view="root.view" on-view-change="root.view = $event.view"></header-component>
<main-component view="root.view"></main-component>
看看并玩简单的演示。
angular.module('demo', [])
.controller('RootController', function() {
this.view = 'table'
})
.component('headerComponent', {
template: `
<h3>Header component</h3>
<a class="btn btn-default btn-sm" ng-class="{'btn-primary': $ctrl.view === 'list'}" ng-click="$ctrl.setView('list')">List</a>
<a class="btn btn-default btn-sm" ng-class="{'btn-primary': $ctrl.view === 'table'}" ng-click="$ctrl.setView('table')">Table</a>
`,
controller: function() {
this.setView = function(view) {
this.view = view
this.onViewChange({$event: {view: view}})
}
},
bindings: {
view: '<',
onViewChange: '&'
}
})
.component('mainComponent', {
template: `
<h4>Main component</h4>
Main view: {{ $ctrl.view }}
`,
bindings: {
view: '<'
}
})
<script src="https://code.angularjs.org/1.5.0/angular.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
<div class="container" ng-app="demo" ng-controller="RootController as root">
<pre>Root view: {{ root.view }}</pre>
<header-component view="root.view" on-view-change="root.view = $event.view"></header-component>
<main-component view="root.view"></main-component>
</div>
演示: http :
//plnkr.co/edit/ODuY5Mp9HhbqA31G4w3t?p =
info
这是我写的一篇博客文章,详细介绍了基于组件的设计:http : //dfsq.info/site/read/angular-components-
communication
问题内容: 我在页面上有一个组件的两个实例(搜索字段),在它们之间有另一个组件(进行服务器调用的按钮),例如: 我要做的只是将一个未修改的参数从CardSearch字段传递到RunOnServer按钮,但是如果简单的话,我该死的。据此,我可以使用this.state.var作为道具,但是这样做可以在编译代码时给我’undefined.state.var’。React的官方文档并不出色。他们只是告诉
我正在创建一个用户设置帐户使用故事板的5个步骤。每个步骤都有一个ViewController:1:)输入姓名、联系人等,2:)导入照片,3:)输入等4:)更多输入5:)确认页面,如果用户点击“确认”->获取所有输入并上传解析。 我在网上搜索时得到的唯一解决方案是创建一个函数“Prepare for Segue”并传递信息...但对我来说,这没有任何意义: 如果我有1000个viewcontroll
我有两个viewController,分别命名为viewController和我想获取数据并使用委托将其发送到secondViewController。另外,我在secondViewController中有一个数组,当每个数据来自VC1时,它必须存储数据,如; segue1,第一个数据来了->arrayElements{firstData}segue2,第二个数据来了->arrayElements
我正在学习通过教程在父组件和子组件之间传递数据。我仔细检查了我的代码,仍然没有找出错误。 我的index.js Home.js 按钮更改链接onClick事件正在调用changeLink函数,该函数将新链接传递给props。 错误:-
我想把我的数据传递给其他的viewcontroller,但我做不到。我的密码在下面。ViewControllers的屏幕截图在这里。当用户写出他们的名字和密码时,我想传递另一个用户的数据,但他们之间还有一个viewcontroller。我认为这是一个问题,但我可以移除这个额外的视图控制器,所以我想了解如何才能把这些数据传递给其他的一个? 第一个viewcontroller的代码 第二个viewco
订单列表 对于Product.class(string,double,int,int)和Order.class(string,double,int)我有一个单独的类。我还有一个用于productlist的arrayAdapter,它有增加/减少产品数量的按钮。