Я написал директиву в anguarjs и попытался использовать директиву на html-странице.Угловая директива не загружается
directive.js
.directive('formFieldNew', function($timeout, FieldTypes) {
return {
restrict : 'EA',
templateUrl : '/common-licensing/resources/partials/subscriber/template.html',
replace : true,
scope : {
record : '=',
field : '@',
live : '@',
required : '@'
},
link : function($scope, element, attr) {
$scope.$on('record:invalid', function() {
$scope[$scope.field].$setDirty();
});
$scope.types = FieldTypes;
$scope.remove = function(field) {
delete $scope.record[field];
$scope.blurUpdate();
};
$scope.blurUpdate = function() {
if ($scope.live !== 'false') {
$scope.record.$update(function(updatedRecord) {
$scope.record = updatedRecord;
});
}
};
var saveTimeout;
$scope.update = function() {
$timeout.cancel(saveTimeout);
saveTimeout = $timeout($scope.blurUpdate, 1000);
};
}
};
new.html
<form name='newContact' novalidate class='form-horizontal'>
<form-field-new ng-repeat='(k,v) in productTempDetailsLists' record='productTempDetailsLists' field='{{k}}'></form-field-new>
<button class='btn btn-primary' ng-click='save()' ng-disabled='newContact.$invalid'> Create Contact </button>
</form>
template.html
<div>
<input ng-model='record[field][0]' type='{{record[field][1]}}' class='form control'/>
</div>
Когда я запускаю файл Я г etting ошибка ниже в моей консоли.
Error: [$compile:tplrt] http://errors.angularjs.org/1.3.15/$compile/tplrt?p0=formFieldNew&p1=%2Fcommon-licensing%2Fresources%2Fpartials%2Fsubscriber%2Ftemplate.html
at Error (native)
at http://localhost:8080/common-licensing/resources/lib/angular/angular.min.js:6:417
at http://localhost:8080/common-licensing/resources/lib/angular/angular.min.js:65:275
at http://localhost:8080/common-licensing/resources/lib/angular/angular.min.js:112:113
at n.$eval (http://localhost:8080/common-licensing/resources/lib/angular/angular.min.js:126:15)
at n.$digest (http://localhost:8080/common-licensing/resources/lib/angular/angular.min.js:123:106)
at n.$apply (http://localhost:8080/common-licensing/resources/lib/angular/angular.min.js:126:293)
at l (http://localhost:8080/common-licensing/resources/lib/angular/angular.min.js:81:240)
at M (http://localhost:8080/common-licensing/resources/lib/angular/angular.min.js:85:342)
at XMLHttpRequest.F.onload (http://localhost:8080/common-licensing/resources/lib/angular/angular.min.js:86:367)
Я попытался добавить <div>
тег для моего new.html файла, как в журнале ошибок, но это не сработало. Пожалуйста, помогите мне.
Казалось бы, что 'templateUrl' не правильный путь. Действительно ли этот HTML-файл находится в файле с именем 'template.js' или это опечатка? В другом месте файл упоминается как 'template.html' – Claies
Я получал ошибку 404 (не найден) для другого пути templateUrl, который я пробовал. Этот путь не обнаружил такой ошибки, поэтому я предположил, что это правильный путь. –
Предваряя будущую проблему, вы создаете область выделения, которая не сможет разговаривать с контроллером формы. Некоторые встроенные функции не будут работать таким образом. Вы можете потребовать: FormController, но это может оказаться сложным. Я бы просто использовал 'scope: true' –