Я пытаюсь использовать AngularJS внутри ASP UpdatePanel, очень нравится в этом вопросе: AngularJS with ASP.NET Updatepanel partial updateAngularJS события с ASP.NET UpdatePanel
Это решение также помогло, по крайней мере в отношении статических частей, то есть все, при инициализации.
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
var elem = angular.element(document.getElementById("myDiv"));
var newElem = $compile(elem)($scope);
$scope.$apply();
elem.replaceWith(newElem.html());
});
Свойства в пределах add_endRequest()
показаны правильно. Моя проблема в том, что все взаимодействие мертво.
Например, если я ставлю
<div id="myDiv">
{{testtext}}
<div ng-init="testtext='hello world'"/>
</div>
он будет печатать строки, как и ожидалось. Но при добавлении, т.е. события клика, ничего не происходит.
<div ng-click="testtext='hello world'">Click here</div>
Любые идеи, почему? Насколько я понимаю, угловое $compile
и $scope.$apply()
должно применяться ко всем функциям угловой функции, но, похоже, это не так.
Угловой отлично подходит для одиночных приложений страниц или сайтов с большим количеством клиентов. UpdatePanels используются, чтобы не выполнять работу на стороне клиента. Они очень разные парадигмы, которые не смешиваются хорошо. Думали ли вы об удалении UpdatePanel и используете ли вы подход AJAX и Web API? Я думаю, что это сэкономит вам массу неприятностей в долгосрочной перспективе. – mason
Слушайте услышать. У вас определенно есть точка. Многие темы здесь советуют не использовать Angular вообще на сайте WebForms, но мы уже делаем это здесь успешно. С UpdatePanels, хотя, как вы говорите, это действительно требует изменения Углового и использовать его далеко не так, как он предназначен. Я подумал об изменении настроек, но, тем не менее, иногда есть причины сохранить текущую настройку, например, если стоимость переключения слишком высока, и тогда может быть полезно немного хаков. –