AngularJS: директива ng-transclude для ввода значения
Я пытаюсь создать директиву, которая добавляет значение ng-transclude в атрибут значения поля ввода в HTML-шаблон:
Директива, которую я создал:
module.directive('editInput', function(){
return {
restrict: 'E',
scope: {
value: '='
},
transclude: true,
template: '<p ng-show="value == false" ng-transclude></p>' +
'<input ng-show="value == true" placeholder="" value="" ng-transclude/>'
}
});
ищет что-то, что добавляет значение ng-transclude к атрибуту value во входном элементе
шаблон:
<edit-input value="isEditModeActive">{{person.name}}</edit-input>
В настоящее время я получаю этот вывод HTML:
<input ng-show="value == true" placeholder="" value="" ng-transclude="" class="">
<span class="ng-binding">Name</span></input>
но на самом деле мне нужен этот вывод HTML:
<input ng-show="value == true" placeholder="" value="Name">
1 ответ
Решение
script.js:
angular.module('app', [])
.controller('ctrl', function($scope) {
$scope.person = {};
$scope.person.name = 'Rahul';
})
.directive('editInput', function(){
return {
restrict: 'E',
scope: {
value: '=',
editName: '@'
},
transclude: true,
template:
'<p ng-show="value == false" ng-transclude></p>' +
'<input ng-show="value == true" placeholder="" value="{{editName}}" />'
}
});
index.html:
<!doctype html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body ng-controller="ctrl">
<script src= "angular.js"></script>
<script src= "script.js"></script>
<edit-input value="true" edit-name="{{person.name}}">{{person.name}}</edit-input>
{{person.name}}
</body>
</html>