升级AngularJs 1.5至1.6-哪些确切的绑定会受到$compile reg控制器实例更改的影响


从AngularJs 1.5升级到1.6时$compile更改的文档: 默认情况下,组件/指令控制器实例上的

预分配绑定被禁用,这意味着它们在构造函数中将不再可用。

--AngularJS开发者指南-迁移到V1.6-$compile

文档中的升级示例如下(缩写(:

之前

.component('myComponent', {
bindings: {value: '<'},
controller: function() {
//...
}
})

之后

.component('myComponent', {
bindings: {value: '<'},
controller: function() {
this.$onInit = function() {
// ...
};
}
})

我已经发现,对于任何使用bindToController:true的指令,我都必须使用相同的$onInit函数,如下所示:

.directive('acAllocation', acAllocation);
function acAllocation(SomeService) {
return {
restrict: 'E',
replace: true,
scope: {
allocation: '=acAllocation'
},
controller: acAllocationController,
controllerAs: 'vm',
bindToController: true,
templateUrl: 'path/acAllocation.html'
};
function acAllocationController() {
var vm = this;
this.$onInit = function () { //...

是否有其他类型的绑定受到此更改的影响?

或者用bindToController:true处理组件指令就足够了吗?

重新表述同样的问题:在Angular 1.7应用程序中,仅使用带有bindToController的指令:false:我会面临任何关于预分配绑定的问题吗?

当调用$onInit((生命周期方法时,绑定就完成了。这是唯一的保证。假设值在构造函数中可用是不安全的,这会影响整个应用程序。

我建议改用1.5风格的组件和ES6,以便将来更容易迁移。

相关内容

  • 没有找到相关文章

最新更新