угловой ng-шаблон не обновлялся после того, как у массива есть данные

0

Я использую угловую форму для создания формы, где вставка и изменение находятся на одной странице. Несмотря на то, что я все-таки хорошо вставляю форму, но когда пользователь вводит модификацию, шаблон не привязывается назад.

Мой 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

Теги:

1 ответ

0

У меня была аналогичная проблема, проблема была в гонке. Загружает ли шаблон сначала из $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>
  • 0
    Я не использовал $ templateCache, я объявляю все ng-шаблоны в моем HTML-файле. Так значит ли это, что я должен переместить свой HTML-шаблон ng в свой js-файл и использовать $ templateCache для создания шаблона?
  • 0
    извините, я нажму "отправить" слишком рано, вы все еще можете поместить свои шаблоны в HTML-файлы, я просто отделяю их от индексации. Вероятно, ваша проблема связана с той же проблемой состояния гонки, что и у меня. Не имея возможности протестировать ваш код, это всего лишь догадка
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню