![](/img/trans.png)
[英]Angular: How to use custom function inside the ng-repeat directive?
[英]How to use Angular 1 directive variable inside the Angular 2 component function
var app = angular.module('addApp', []);
app.controller('addController', ['$scope', function ($scope) {
}]).directive('add', function(){
return {
scope:{},
template: '<input type="number" ng-model=number>',
controller: 'addController'
};
});
var adapter = new ng.upgrade.UpgradeAdapter();
AppComponent = ng.core.Component({
selector: 'my-app',
template: '<add></add>sum={{sum}}',
directives: [adapter.upgradeNg1Component('add')]
}).Class({
constructor:function() {
this.frist=5;
},
add():function{
this.sum=frist+number;
}
});
app.directive('myApp', adapter.downgradeNg2Component(AppComponent));
document.addEventListener('DOMContentLoaded', function() {
adapter.bootstrap(document.body, ['addApp']);
console.log(adapter);
});
我已经使用UpgradeAdapter将上述Angular 1代码升级为Angular 2。
我想进一步使用Angular 2编写应用程序。因此,我想在angular组件中使用输入数字。
我认为唯一的可能性是使用Angular2的插值将组件的对象传递给Angular1指令,以便后者可以将输入绑定到该对象。 在Angular2指令不支持在此类字段上进行双向绑定的情况下,无法在此级别上使用基本类型。 您需要为您的值提供一个“容器”对象,以便您可以通过引用更新容器并在Angular1指令和Angular2组件之间共享数据。
在这种情况下,必须为此指令定义子作用域。 可以在Angular1指令和Angular2组件之间共享“范围”。
这是我建议的方法:
var app = angular.module('addApp', []);
app.controller('addController', ['$scope', function ($scope) {
}]).directive('add', function(){
return {
scope: {
number: '='
},
template: '<input type="number" ng-model="number.value">',
controller: 'addController'
};
});
Angular2组件将为该数字提供一个容器:
AppComponent = ng.core
.Component({
selector: 'my-app',
template: `
<add [number]="number"></add>
<span (click)="add()">add</span>
sum={{sum}}
`,
directives: [adapter.upgradeNg1Component('add')]
})
.Class({
constructor:function() {
this.frist = 5;
this.number = { value: 10 };
},
add() {
this.sum = this.frist + this.number.value;
}
});
这是对应的plunkr: https ://plnkr.co/edit/M4m4aZMNr3yc7TgMD9Ko ? p = preview。
希望对您有帮助,蒂埃里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.