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);
});

10-04 12:15