angular.module("taskAssign")
.service('shareData', function(){
this.assignees = "dummy";
});
.directive("textArea", textAreaDir)
function textAreaDir(shareData){
return{
restrict:'EA',
template:'<textarea></textarea>',
replace: true,
scope : {
},
link:function(scope, iElm, iAttrs, controller,ngModel){
scope.$watch(shareData.assignees,function (old,newv) {
console.log(old);
console.log(newv);
});
},
controller:function($scope){
$scope.$watch('shareData.assignees', function (newVal, oldVal, scope) {
if(newVal) {
console.log(newVal);
}
});
}
}
}
我想使用sharedata服务的ltest值更新textArea指令中的视图,如果shareData更新视图未更新,则稍后仅显示shareData服务的初始值
最佳答案
您需要将watch作为函数放在服务变量shareData.assignees
上,基本上该函数将在每个摘要循环上求值。
并且在控制器内部,您需要注入shareData
服务依赖项才能使用它。
码
scope.$watch(function() {
return shareData.assignees; //this will evaluate on each digest, and run callback when value gets changed.
}, function(old, newv) {
console.log(old);
console.log(newv);
});