2015-06-18 9 views
1

Я новичок в Угловом. Не уверен, почему директива не работает ниже. Поиск некоторых статей. Ничто не помогаетУгловая - Директива не работает

angular.module('oneApp', []).controller('OneAppController', function($scope){ 
    //Some Logic 
}).directive('dvReplaceText', ['$interval', '$compile', function($interval, $compile) { 
    return { 
    restrict: 'A', 
    link: function(scope, element, attr) { 
      scope.$watch(scope.data, function(value) { 
       element.html(value); 
      }); 
     } 
    } 
}]); 

HTML:

<body ng-app="oneApp"> 
    <div ng-controller="OneAppController"> 
     <input class="input-data-box" ng-model="data" dv-replace-text=""/> 
    </div> 
</body> 

JSFiddle Link

+0

в стороне от того, что у вас нет Fiddle, настроенного вправо (изменение на No Wrap - in ) ... Что это должно делать? у вас есть директива, назначенная элементу '', а затем пытается изменить' html' элемента, но '' не имеет свойства 'html'. – Claies

ответ

4

Должно быть:

scope.$watch('data', function(value) { 
    ... 
}); 
+0

Спасибо! это работает :) –

1

Try, как это

angular.module('oneApp', []).controller('OneAppController', function($scope){ 
 
    
 
    //Some Logic 
 
}).directive('dvReplaceText', ['$interval', '$compile', function($interval, $compile) { 
 
    return { 
 
    restrict: 'A', 
 
    link: function(scope, element, attr) { 
 
      scope.$watch("data", function(value) { 
 
       //element.value(value); 
 
       console.log(value); 
 
      }); 
 
     } 
 
    } 
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<body ng-app="oneApp"> 
 
    <div ng-controller="OneAppController"> 
 
     <input class="input-data-box" ng-model="data" dv-replace-text=""/> 
 
    </div> 
 
</body>

1
var app=angular.module('myApp', []); 
app.controller('OneAppController', function($scope){ 
     //Some Logic 
    console.log("data loaded"); 
    }); 


app.directive('dvReplaceText', function() { 
     return { 
     link: function(scope, element, attr) { 
       scope.$watch(scope.data, function(value) { 
        element.html(value); 
       }); 
      } 
     } 
}); 

HTML

<div ng-controller="OneAppController"> 
    <input class="input-data-box" ng-model="data" dv-replace-text/> 
</div> 

Вот рабочая модель JSFIDDLE LINK

Смежные вопросы