如何从attrs绑定范围。$ observe?
<test func="hohoho"></test>
app.directive('test', function(){
return {
restrict: 'E'
, scope: { parentFunc: '@func'}
, link: function(scope, element, attrs) {
var func = '';
attrs.$observe('func', function(val) {
func = val;
console.log(func);
})
console.log('end');
console.log(func);
console.log(scope.parentFunc);
});
}
};
});
当我跑步时,它会打印
end
undefined
undefined
(an empty string)
hohoho
为什么我在打印func和parentFunc时得到未定义?
答案 0 :(得分:1)
我认为这些undefined
行正在代码的其他地方打印而不是指令。
检查这个小提琴并查看控制台输出:http://jsfiddle.net/bmleite/Jx4hm/
你应该得到这样的东西(这是预期的输出):
端
1
2 undefined
3 hohoho
答案 1 :(得分:0)
我如何绑定值func来设置scope.func2以外的值?
在Directives页面的“属性”部分下:
在链接阶段,尚未评估插值,因此此时的值设置为未定义。
只有在$ observe回调函数中,该值才包含插值。您必须将“观察之外”的代码移动到$ observe回调函数中。
或者试试@ bmleite的Jx4hm / 2小提琴,其中'='代替'@'。如果你不需要插值(例如,你不需要像func =“Hello {{modelInstance}}”那样做,你可以使用'=',它设置双向数据绑定,但值是在链接功能中可用。 ('@'设置单向数据绑定。)