Mam problem z uzyskaniem kątowej pracy z .Net częściowymi zwrotami.Szablon kątowy i .NET Częściowa informacja zwrotna
Pytanie jest w zasadzie taki sam, aby w ten sposób: Re-initialize Angular bindings after partial postback
Zasadniczo mam kartę, na której mam kątową aplikację, a następnie Mam drugą kartę z jakiejś kontroli C#, muszę zrobić częściowe odświeżenie między kartami i kiedy jestem wracając do mojej aplikacji, nie ma nic.
Próbowałem routingu z ngView, a następnie wypróbowałem $route.reload()
(trafia do kontrolera i widzę, że szablon jest rozkładany, ale wynik na stronie nie ma). Następnie próbowałem compile(templateCache.get(lazyTableControllerRoute.current.templateUrl))(scope)
jak wspomniano here. Nic.
Proszę o pomoc :)
po każdym odświeżenie kładę to na stronie HTML:
LiteralControl lazyControl = new LiteralControl("<div ng-app=\"LazyLoadingApp\" style=\"padding:10px\" ng-controller=\"LazyTableController\" ng-view><lazy-table> </lazy-table></div>");
Controls.Add(lazyControl);
a niektóre stałe config jak templateUrl
.
Oto mój kod:
var app = angular.module('LazyLoadingApp', ['ui.bootstrap', 'ngRoute'], function ($interpolateProvider) {
$interpolateProvider.startSymbol('[[');
$interpolateProvider.endSymbol(']]');
});
app.config(function ($routeProvider, $locationProvider, tableTemplateUrl) {
$routeProvider.when('/Page.Web.UI/sptl_project.aspx', {
controller: 'LazyTableController',
templateUrl: tableTemplateUrl,
});
// configure html5 to get links working on jsfiddle
$locationProvider.html5Mode(true);
});
//**This objects I am using after partial postback to check in the console if e.g. $route.reload() works..**
var lazyTableControllerRoute = null;
var templateCache = null;
var compile = null;
var scope = null;
app.directive('lazyTable', ['tableTemplateUrl',
function (tableTemplateUrl) {
return {
name: 'lazyTable',
priority: 0,
restrict: 'E', // E = Element, A = Attribute, C = Class, M = Comment
templateUrl: tableTemplateUrl
};
}
]).controller('LazyTableController', ['$scope', '$rootScope', 'lazyFactory', 'opsPerRequest', 'header', '$route', '$templateCache', '$compile',
function ($scope, $rootScope, lazyFactory, opsPerRequest, header, $route, $templateCache, $compile) {
lazyTableControllerRoute = $route;
var loadingPromise = null;
templateCache = $templateCache;
compile = $compile;
scope = $scope;
(...) rest is not important
UPDATE:
Próbowałam z require.js .. (Ponownie, to działa po pełnym załadowaniu strony). Mój pomysł polegał na bootstrap elementu po częściowym odświeżeniu. Zbudowałem prosty przypadek testowy, który w Panelu aktualizacji wraz z moją aplikacją zawiera prosty przycisk, po prostu częściowy odświeżenie. Po kliknięcie (gdy aplikacja zniknęła) Próbowałem w konsoli:
angular.bootstrap(document, ['LazyLoadingApp'])
Ale mam błąd, którego nie można usunąć:
App Already Bootstrapped with this Element 'document'
Oto plunker dla aplikacji w require.js sposób (ale należy zachować pamiętając, że jest to po prostu celem przeglądu kodu ..)
Dziękuję za odpowiedź. Nie używam go, gdy próbowałem "require.js way" usunąłem tag ng-app. –
jak działa lazycontrol? dlaczego zawiera ng-app? –
Możesz zobaczyć tutaj, że lazycontrol zawiera ng-app, ponieważ to było moje pierwsze podejście - normalne wstrzykiwanie kątowe. Proszę nie podłączać kodu powyżej "UPDATE" z samą aktualizacją, ponieważ zrobiłem kilka zmian dla require.js do pracy - jak usunięcie ng-app ze strony i dodanie ngview .. –