(первый раз Угловая пользователя)угловой нг-повтор не обновляется, когда угловой метод вызывается с JQuery внутри директивы
Так что я пытаюсь вызвать угловой метод, который я создал addField
функцию (которая работает, если я называю это с ng-click), когда другой элемент удаляется с помощью jqueryUI draggable и droppable.
Функция перетаскивания работает нормально, и это даже верно обновляет мою модель, потому что, когда я запускаю $scope.fields
в консоли при разрыве внутри функции addField
, она находит мои объекты в порядке.
Проблема в том, что хотя объекты есть, они не отображаются в файле ng-repeat
html, как это было с ng-click
.
ANGULAR
angular.module('formApp', [])
.controller('formController', ['$scope', function($scope) {
$scope.fields = [
//{label:'The Field Title, with Angular', desc:'Lorem Ipsum Dolor', req:false},
//{label:'The Other Field Title, with Angular', desc:'Lorem Ipsum Dolor Dos', req:false}
];
$scope.addField = function() {
$scope.fields.push({label:'Added Form Title', desc:'Added Form Desc', req:true});
//$scope.fieldLabel = '';
console.log("addField");
};
}])
.directive('drag', function() {
return {
restrict: "A",
link: function(scope, elem, attrs) {
$(elem).draggable({
helper: "clone",
activeClass: "ui-state-default",
hoverClass: "ui-state-hover",
drop: function(event, ui) {
}
});
}
}
})
.directive('drop', function() {
return {
restrict: "A",
link: function(scope, elem, attrs) {
$(elem).droppable({
hoverClass: "holder-state-highlight",
drop: function(event, ui) {
//handleDropEvent(event, ui);
//sortOrder();
angular.element('#theForm').scope().addField();
}
});
}
}
});
Вы пытались обернуть 'angular.element (...)' вызов в $ scope. $ Apply() '? Вы можете узнать больше о '$ apply' [здесь] (https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$apply) –
попробуйте установить обычную переменную js, например:' var fieldsArray = $ scope.fields = [что у вас есть]], а затем 'push' в' fieldsArray' вместо '$ scope.fields'. Не знаю, почему это работает, но они используют этот шаблон в [todos mvc] (https://github.com/tastejs/todomvc/blob/gh-pages/examples/angularjs/js/controllers/todoCtrl.js#L12) и это работает. – user2936314
@BrianS, который работает! Используйте в качестве ответа, и я его проверю :) – Reuben