我试图从我的指令中抛出一个事件,即
link: function (scope, elem, attrs) {
elem.on('blur', function () {
$rootScope.$broadcast("emit:dateTimePicker", {
location: scope.location,
action: 'changed',
dateTime: scope.dateTime
});
});
}
然而,当它在控制器中出现时
$scope.$on('$broadcast:dateTimePicker', function (e, value) {
$scope.vm.dateTime = value.dateTime;
$scope.vm.message = "Change!";
console.log($scope.vm.dateTime);
});
控制台写出更改的值,但绑定到html元素的值不会。我究竟做错了什么。对不起,如果这个问题措辞不正确 - 任何提示/帮助将不胜感激。
这是html
<pre >{{vm}}</pre>
答案 0 :(得分:0)
尝试在$scope.apply()
块中添加事件处理程序,如下:
link: function (scope, elem, attrs) {
elem.on('blur', function () {
scope.$apply(function() {
$rootScope.$emit("emit:dateTimePicker", ...);
});
});
}
答案 1 :(得分:0)
添加范围。$ apply();在$ rootScope之后。$ broadbast(&#34; emit:dateTimePicker&#34;,{})