我正在将应用从1.4转换为1.6.6
我需要在控制器中使用绑定,以单向绑定方式传递元素
我正在尝试使用$ onInit访问控制器中传递的值,但它不起作用(当字符串值已经存在时,this.value未定义)。
我已经用问题解决了这个问题
1)OnInit和超时OR
2)OnChange
这是对的吗?有什么我想念的吗?是不是应该全部绑定在onInit内?有人写道,在某些情况下价值不可用......文件含糊不清我认为......为什么会这样?还有其他更优雅的解决方案吗?
我的HTML:
<gravatar value="$ctrl.contact.email" size="50" class="img-circle"></gravatar>
我的组件:
angular
.module('app')
.component('gravatar', {
template: '<img src="http://www.gravatar.com/avatar/{{ $ctrl.value | gravatar }}?s={{$ctrl.size || 64}}" class="{{$ctrl.class}}">',
controller: Gravatar,
bindings: {
value: '<',
size: '@',
class: '@'
}
});
我的控制器版本1和2:
this.$onInit = function () {
var size = (this.size) ? this.size : 64;
$timeout(function () {
this.log.log($scope.$ctrl.contact);
}, 0);
};
this.$onChanges = function (changesObj) {
this.log.log(changesObj.value);
if (changesObj.value.currentValue) {
this.img = 'http://gravatar.com/avatar/' + this.md5(this.value) + '?s=' + this.size;
}
};