【发布时间】:2015-11-16 17:27:57
【问题描述】:
我很难弄清楚如何将更新后的值从一个模板的点击绑定传递到另一个模板。本质上,我正在创建一个组件存储库应用程序,用户可以在其中查看组件并在页面上更新它的选项。这些选项大部分都可以在组件之间共享,因此我创建了单独的文件来存储这些常用选项。
在下面的示例中,默认的 col-xs-4 类正在按预期添加到组件中,但单击事件不会更新该类,即使事件本身有效,因为记录它会更新类中的列值。看来我需要某种事件监听器来更新它,但我不确定如何处理。
content-tout.html
<div class="row">
<div [ng-class]="columnAmount" class="content-tout">
Tout
</div>
</div>
<hr />
<h2>Options</h2>
<p>Use the following buttons to update the values in the component above.</p>
<options></options>
content-tout.ts
import { Component, View, NgClass } from 'angular2/angular2';
// this is option for changing column class from the ng-class in the template
import { ColumnsOption } from '../../shared/options/columns';
@Component ({
selector: 'contentPlaceholder',
bindings: [ColumnsOption]
})
@View ({
templateUrl: '/app/components/content-tout/content-tout.html',
directives: [ColumnsOption, NgClass]
})
export class ContentTout {
private columnAmount: string;
constructor(private columnsOption:ColumnsOption) {
this.columnAmount = this.columnsOption.columns;
}
}
columns.ts
import { Component, View, NgFor } from 'angular2/angular2';
@Component ({
selector: 'options'
})
@View ({
template: `
<hr />
<h3>Columns / Width</h3>
<nav>
<button *ng-for="#column of columnsCollection" (click)="changeColumns(column)" class="btn btn-primary-outline" type="button">
{{ column }}
</button>
</nav>
`,
directives: [ NgFor ]
})
export class ColumnsOption {
private columnsCollection: Array<string> = [
'col-xs-1', 'col-xs-2', 'col-xs-3', 'col-xs-4', 'col-xs-5', 'col-xs-6', 'col-xs-7', 'col-xs-8', 'col-xs-9', 'col-xs-10', 'col-xs-11', 'col-xs-12'
];
public columns: string = "col-xs-4";
private changeColumns(column: string) {
this.columns = column;
}
}
我在 Angular2 中使用单击绑定进行了很多搜索,并且只遇到了示例与绑定在同一视图中的资源。我希望这种模块化方法是可能的,所以如果有人有任何资源可供我阅读,或者 API 预览中的特定显示,我将非常感激。
【问题讨论】:
-
你在寻找类似example的东西吗?
-
您好,非常感谢您的回复。我注意到这里的主要区别是构造函数注入了类,以便从主机安全使用来实例化。无论如何,这在我的本地应用程序中有效,所以如果你能在答案中解释它到底在做什么,我肯定会标记它。