4

私が取り組んでいるサイトにはカスタム 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 を変更しようとしましたが、それも機能しません。

http://jsfiddle.net/sZrer/1

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);
    };
  });
4

1 に答える 1