我在页面上同时使用 AngularJs 和 Pjax。
使用 Pjax 重新加载我的页面的一部分后,Angularjs 停止在那里工作。
简单的 {{ 2+2 }} 除了用 pjax 重新加载的部分外,在任何地方都可以工作。
我发现,问题在于使用 $compile。
我尝试了不同的代码片段,但没有一个对我有用。
这个也没有
angular.element(document).ready(function() {
angular.bootstrap(document);
});
也不是这个
// outside of angular...
var ngRefresh = function() {
var scope = angular.element("body").scope();
var compile = angular.element("body").injector().get('$compile');
compile($("body").contents())(scope);
scope.$apply();
}
// PJAX
$('#page').on('pjax:success', function(e){
ngRefresh();
});
代码片段对我有用。有人知道可行的解决方案吗?
UPD: 在 PSL 建议将 $("body") 更改为 $(document.body) 之后,代码开始工作。但是现在一切都是从头开始初始化的,并且在每次 pjax 调用之后我都会丢失我的数据(在我的示例中选择的图像)。我怎样才能避免这种情况?
这是我的 js 文件:
app = angular.module("BlogImageApp", []);
app.controller("BlogImageController", function($http, $scope){
$scope.selectedImageId = null;
$scope.selectedImageUrl = "";
$scope.selectImage = function(image_id) {
$scope.selectedImageId = image_id;
var params = 'id='+image_id;
$http.get('/blog/image/get-url-by-id?'+params).success(function(data){
$scope.selectedImageUrl = data;
});
}
});
// registers the BlogImageApp in the view
angular.bootstrap(document, ['BlogImageApp']);