Я использую угловую форму для создания формы, где вставка и изменение находятся на одной странице. Несмотря на то, что я все-таки хорошо вставляю форму, но когда пользователь вводит модификацию, шаблон не привязывается назад.
Мой html: -
<table>
<tbody>
<tr ng-repeat="DescEN in tempDescENList" ng-include="getTemplate(DescEN,'EN')">
</tr>
</tbody>
</table>
<script type="text/ng-template" id="ENdisplay">
<td>{{DescEN.Sequence}}</td>
<td>{{DescEN.Type}}</td>
<td>{{DescEN.Detail}}</td>
<td>
<button class="btn btn-warning btn-xs" ng-click="editDesc(DescEN,'EN')">Modify</button>
<button class="btn btn-danger btn-xs" ng-click="deleteDesc(DescEN,'EN')" ng-click="">Delete</button>
</td>
</script>
<script type="text/ng-template" id="ENedit">
<td>{{DescEN.Sequence}}</td>
<td>{{DescEN.Type}}</td>
<td><input type="text" ng-model="DescEN.Detail" /></td>
<td>
<button class="btn btn-info btn-xs" ng-click="saveEditDesc(DescEN,'EN')">Save</button>
<button class="btn btn-primary btn-xs" ng-click="reset(DescEN,'EN')">Cancel</button>
</td>
</script>
Мой скрипт позади загрузил объект, и я проверяю его с помощью консоли и там. Однако он не привязывался к моему ng-repeat. Странно то, что после того, как я вручную щелкнул мышью по добавлению новой строки в пользовательский интерфейс, тогда предыдущие данные имели нагрузку. Например, из.js файла загрузите 3 объекта в ретранслятор. По умолчанию ng-template не показывал объект 3, однако после добавления еще одного объекта с помощью интерфейса он показывает 4 записи в моем ng-повторе.
Вопрос: - Как заставить мой ng-шаблон показывать ENdisplay после привязки из js
У меня была аналогичная проблема, проблема была в гонке. Загружает ли шаблон сначала из $templateCache
через ng-include
или сначала загружает данные... что проблема, с которой вы, вероятно, имеете.
Я решил это с помощью директивы:
.directive 'taskForm', [
'$parse'
'$http'
'$compile'
'$templateCache'
($parse, $http, $compile, $templateCache)->
dir =
restrict: 'A'
require: 'ngModel'
link: ($scope, elem, attrs, ngModel)->
$scope.task = $parse(attrs.ngModel) $scope
type = $scope.task.task_type
types = [
'type_a'
'type_b'
'type_c'
]
if _.indexOf(types, type) > -1
url = "./views/task.#{type}.html"
$http.get url, {cache: $templateCache}
.then (rsp)->
tmpl = rsp.data
elem.html tmpl
$compile(elem.contents()) $scope
]
Затем вы можете использовать его так:
<tr ng-repeat="DescEN in tempDescENList">
<td>
<div ng-model="DescEN" task-form></div>
</td>
</tr>