Angular $ compile正在改变URL

时间:2016-11-04 07:14:10

标签: javascript angularjs ajax

我有一些跟随控制器,在一些ajax动作之后,它可以很好地动态编译新的DOM元素:

angular.module('cms').controller('CompileHtmlCtrl', [
  '$scope', '$compile',
  function ($scope, $compile) {
    $scope.compileHtml = function (id) {
      $compile("#"+id)($scope);
    };
  }
]);

当我在ajax动作的反应中尝试更改URL时出现问题,因为如果我在任何地方(编译之前或之前)调用pushState,则角度将总是改变URL。

window.history.pushState({}, '', url);

可以防止角度这样做吗?

使用$digest

已解决

$compile("#"+id)($scope);
$scope.$digest();

然后我找到了更好的解决方案来关闭角度URL操作Turn off URL manipulation in AngularJS

1 个答案:

答案 0 :(得分:0)

您应该在视图中使用指令而不是控制器,这样您就可以在视图中更改ajax数据,这更像是Angular的方式。为了解决您的问题,我们需要知道您正在使用的Angular路由器。