В настоящее время я изучаю AngularJS.Обновление ng-repeat при изменении данных
Я застреваю, пытаясь обновить ряд кнопок, которые я создал из директивы, когда данные объекта обновляются.
Я прочитал несколько сообщений, посвященных аналогичным проблемам, где данные, не созданные в директиве, не будут обновляться безрезультатно.
HTML
<body>
<div id="application" data-ng-app="ApplicationDirective" ng-controller="ApplicationController" class="container-fluid">
<side-panel class="col-lg-2"></side-panel>
<div ng-controller="HomeController" class="content col-lg-10">
</div>
</div>
</body>
Как вы можете видеть, что я определил 2 контроллера. 1 ApplicaitonControler
для управления приложением в целом, а затем вторым HomeController
для управления внутренней секцией HMTL.
У меня тогда есть директива, которая генерирует ряд кнопок для боковой панели.
var app = angular.module('ApplicationDirective', []);
app.directive("sidePanel", function() {
return {
restrict: "E",
template : "<div>" +
"<input ng-repeat='btn in sidePanelButtons' type='button' value={{btn.value}}>" +
"</div>"
};
});
В $scope
данные выше определяется в ApplicationContoller
. Затем я обновляю данные в HomeController
.
app.controller("HomeController", function($scope) {
$scope.sidePanelButtons = $scope.sidePanelButtons.concat([
{value:"TEST"}
]);
});
На данный момент, если я вхожу в sidePanelButtons вар, то я могу видеть, что данные были успешно добавлены, однако ничего в изменениях HTML ?.
Я попытался использовать метод $ scope. $ Apply, но получаю error.
Потенциально у меня неправильные методологии дизайна, поэтому любая помощь будет оценена по достоинству.
Как быстрый совет: вместо этого попробуйте '$ timeout'. Он автоматически выполняет '$ scope. $ Apply'. – Beat