Когда я обновляю массив $scope.d
через $mdDialog
, представление, в котором ng-повторы данные не обновляются. Я попытался с помощью $scope.$apply()
и $scope.digest()
, но я по-прежнему получаю сообщение об ошибке «$scope.digest()
уже идет»Угловой ng-repeat не обновляется в представлении
Html
<md-list-item ng-click="showPrompt($event)" >
<a>
<md-item-content md-ink-ripple layout="row" layout-align="start center">
<div class="inset">
<ng-md-icon icon="note_add"></ng-md-icon>
</div>
<div class="inset">Add Deck
</div>
</md-item-content>
</a>
</md-list-item>
<div ng-controller="deck" id="curDeck">
<md-list-item class="md-3-line" ng-repeat="deck in d" ng-click="showDeck($event, $index).bind(this)">
<div class="md-list-item-text" layout="column">
<td>{{deck.deckname}}</td>
</div>
</md-list-item>
</div
Контроллер
var app = angular.module("app",['ngMaterial', 'ngMdIcons'])
.controller("deck", function($scope, $mdDialog, $mdMedia) {
$scope.d = [
{
deckname: 'NewDeck',
deck: [
{front: "a cappella", back: "without accompaniment"},
{front: "avuncular" , back: "like an uncle"},
{front: "collusion" , back: "conspiracy"},
{front: "Javascript", back: "pain in the ass"},
{front: "Angular", back: "$scope is fun to work with"}
]
}
];
$scope.showPrompt = function(ev) {
// Appending dialog to document.body to cover sidenav in docs app
$scope.confirm = $mdDialog.prompt()
.title('Add a Deck')
.textContent('Your decks are belong to us')
.placeholder('deck name')
.targetEvent(ev)
.ok('Okay!')
.cancel('Cancel');
return $mdDialog.show($scope.confirm).then(function(name){
console.log(name);
$scope.d.push({
deckname: name,
deck:[]
});
});
};
};
Я создал plunker для вас, но не может заставить его работать пока :(https://plnkr.co/edit/iuiSPoCb13U0UNnaHoX4?p = preview –