我使用ajax在Sails项目视图/homepage.ejs中动态加载部分页面。控制器是“食品”,“显示”是“食品”的一个动作,所以我有一个文件/view/food/how.ejs。因此,通过使用Ajax加载食物/显示,将加载show.ejs。
$('#outerDiv').load("food/show",function(responseTxt,status,xhr){
if(status!=="error"){
alert("BOOT...");
//bootstrap angular
angular.bootstrap($("#outerDiv"));
}
});
show.ejs的内容如下:
<script>
alert("LOAD..");
var app = angular.module("myApp",[]);
app.controller("myCtrl",function (){
this.numInStock= 10;
})
</script>
<div ng-app="myApp" ng-controller="myCtrl">
<p>The number in stock is: {{numInStock}}</p>
</div>
但是加载页面中的角仍然不能工作,即使我尝试手动引导新加载页面的角。
警报(装载.)第一位,然后是警报(启动.)接下来,我发现新页面已经呈现为“库存中的数字是:{{numInStock}}”。显然,这是错误的,我希望它是“股票的数字是: 10”。
Chrome控制台出现了一个错误:
Uncaught Error: [ng:btstrpd] http://errors.angularjs.org/1.2.26/ng/btstrpd?p0=%26lt%3Bdiv%20id%3D%22subPage%22%26gt%3B
发布于 2015-02-09 00:59:50
您需要从HTML中删除ng-app
。在页面加载时,您的角页被初始化,因为您也将它添加到HTML中。
angular.bootstrap($('#outerDiv'), ['myApp']);
更多信息:https://docs.angularjs.org/guide/bootstrap
但是,如果ajax页面需要几秒钟的时间来加载,您仍然会看到大括号。要解决这个问题,您可以使用ng绑定代替。
<p>The number in stock is: <span ng-bind="numInStock"></span></p>
发布于 2015-02-09 00:38:37
您的选择器缺少#
angular.bootstrap($("#outerDiv"));
您还可以使用this
,因为它将引用相同的元素,并将另一个请求保存到DOM。
angular.bootstrap($(this));
https://stackoverflow.com/questions/28405614
复制相似问题