AngularJS.Невозможно вставить объекты в объект и повторить их на странице - PullRequest
0 голосов
/ 25 октября 2018

Мне нужно создать новый объект и отправить его в arr.Затем нужно повторить obj на странице с помощью ng-repeat.Это простая админка.Я действительно не знаю, что не так с этим кодом.Это мой контроллер:

app.controller('dashboardCtrl', function (global) {
vm = this;
vm.items = global.getCards();
vm.currentItem = {};
vm.addItem = function () {
    if (!vm.currentItem.id) {
        let id = global.getCardId();
        vm.currentItem.id = id++;
        global.setCardId(id);
        vm.items.push(vm.currentItem);
        console.log(vm.items);
    }
    vm.currentItem = {};
}

HTML-код

Здесь я использую повторить в таблице как тест, прежде чем он перейдет на домашнюю страницу:

<table class="table">
<tbody>
<tr>
  <th scope="row" ng-repeat='x in dashboard.items track by id'></th>
  <td>{{x.id}}</td>
  <td>{{x.title}}</td>
  <td>{{x.description}}</td>
  <td><i ng-class="{{x.icon}}"></i></td>
  <td><input type="button" class="btn btn-warning" ng-click="editItem(x)" 
  value="Edit" name="" id=""></td>
  <td><input type="button" class="btn btn-danger" ng- 
  click="removeItem(x.id)" value="Delit" name="" id=""></td>
  </tr>
  </tbody>
</table>

И это мойСервисы.Здесь я создал несколько функций для передачи данных на страницы:

app.factory('global', function(){
let _cardId = 4;
let _cards = [{
    id: 1,
    title: "First Title",
    description: "Here must be something special",
    icon: "fa fa-check"
},{
    id: 2,
    title: "Second Title",
    description: "Here must be something special",
    icon: "fa fa-check"
},{
    id: 3,
    title: "Third Title",
    description: "Here must be something special",
    icon: "fa fa-check"
}]
return {
   getCards: function(){
        return _cards;
    },
    getCardId: function(){
        return _cardId;
    },
    setCardId: function(cardId){
        if(cardId<_cardId) alert('error');
        else _cardId = cardId;
    }
}
})

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Измени свой HTML.Положите repeat на <tr> и используйте track by x.id.- Луис Карлос

0 голосов
/ 25 октября 2018

Есть две вещи,

  1. Мы должны использовать псевдоним контроллера dashboardCtrl as dashboard, так как вы привязаны как dashboard.items.
  2. Структура таблицы неверна.Просто поставь вот так:

    <table ng-controller="dashboardCtrl as dashboard"> <tr> <th>Id</th> <th>Title</th> <th>Description</th> <th></th> <th></th> <th></th> </tr> <tr ng-repeat='x in dashboard.items'> <td>{{x.id}}</td> <td>{{x.title}}</td> <td>{{x.description}}</td> <td><i ng-class="{{x.icon}}"></i></td> <td><input type="button" class="btn btn-warning" ng-click="editItem(x)" value="Edit" name="" id=""></td> <td><input type="button" class="btn btn-danger" ng- click="removeItem(x.id)" value="Delit" name="" id=""></td> </tr> <tr> </tr> </table>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...