私が取り組んでいるサイトにはカスタム CMS があり、インライン ページ編集に angularjs を使用しています。データベースにはページの生成に使用される HTML が保存されるため、クライアント側のテンプレートとモデルを厳密に使用することはできません。
私は HTML5 pushState を使用していないので、URL はexample.com/page#/widget/1/editまたはexample.com/page#/widget/newのようなものです。現在の問題は、フォームを送信して編集するときです。ウィジェットを追加するか、ウィジェットを追加すると、HTML を DOM に挿入してページのコンテンツをリロードし、URL をデフォルトに変更します$location.path('/')
。
私の現在の実装には複数の問題があります (デモで確認できます)。そのうちの 1 つは、私のフォームsubmit()
コールバックで、$location.path
フォーム ボタンの 2 回目のクリックで URL のみを変更することです。また、[削除] をクリックした URL を変更しようとしましたが、それも機能しません。
customPage.controller('PageEditCtrl', function($scope, $http, $routeParams, $location, $route, $compile, PageState) {
var widgetId = $routeParams.id || widgetCount + 1;
$scope.pageState = PageState;
$scope.widget = { id: widgetId, name: 'Widget ' + widgetId };
$scope.submit = function() {
if ($scope.widget.id > widgetCount) widgetCount += 1;
setTimeout(function() {
var element = $compile(genHtml())($scope);
angular.element('#page-content').html(element);
$location.path('/');
}, 100);
};
});