Javascript 角度$scope未在HTML中显示正确的数据
我有一个cordova应用程序,我想在其中显示位置的详细信息。由于某种原因,当我试图在HTMl中显示一个变量,而该变量在JS中被成功赋值时,什么也没有出现 JS控制器:Javascript 角度$scope未在HTML中显示正确的数据,javascript,html,angularjs,Javascript,Html,Angularjs,我有一个cordova应用程序,我想在其中显示位置的详细信息。由于某种原因,当我试图在HTMl中显示一个变量,而该变量在JS中被成功赋值时,什么也没有出现 JS控制器: app.controller('placeCtrl', function($scope, LocDat){ LocDat.async().then(function(d){ $scope.item= places.selectedItem; $scope.locs = []; for(var i=
app.controller('placeCtrl', function($scope, LocDat){
LocDat.async().then(function(d){
$scope.item= places.selectedItem;
$scope.locs = [];
for(var i=0; i<d.length; i++){
if(d[i].attributes.Joint.id === places.selectedItem.id){
getDistance(d[i]);
$scope.locs.push(d[i]);
}
}
$scope.showSite = function(){
//var ref = navigator.app.loadUrl($scope.item.attributes.Website, '_blank');
var ref = window.open($scope.item.attributes.Website,'_blank','location=yes');
}
$scope.showDetail = function(index){
var selectedItem = d[index];
d.selectedItem = selectedItem
$scope.l = selectedItem;
console.log($scope.l.attributes.City);
$scope.ons.navigator.pushPage('location_detail.html', { title : d.selectedItem.attributes.Address });
}
});
app.controller('placeCtrl',函数($scope,LocDat){
LocDat.async().then(函数(d){
$scope.item=places.selectedItem;
$scope.locs=[];
对于(var i=0;i
位置详情请点击此处
控制台输出的图像:
显然,我的声誉太低,无法发布图像…真的吗?无论如何,它成功地在控制台中显示了城市名称,但html只显示了发出异步调用的逗号服务,例如您的LocDat,当它们返回时不会自动触发摘要事件。如果您正在编写服务,它应该调用$scope。$apply()链接到承诺的末尾。或者,您可以将对$scope变量所做的任何更改包装在apply中,这将使您达到所需的位置
$scope.$apply( function() { $scope.l = selectedItem; } );
在angularjs数据绑定中,如果数据类型是list或object,它将通过视图中的引用值传递 如果您喜欢
$scope.l=selectedItem
,则会更改引用,但监视的引用是上一个引用。因此,最好通过对象上的属性绑定,而不是对象本身。例如:{{obj.l.attributes.City},{{{obj.l.attributes.State}
并在控制器中更新:$scope.obj.l=selectedItem;
问题是,当我加载新页面时,作用域发生了变化。我现在通过onsenui的pushpage函数的参数传递数据,并将其分配给一个单独控制器中的作用域变量。我按照您的建议将其包装在apply中,但现在我被告知,我没有finedCan你能在JSFIDLE上得到一个例子吗?我看我不认为我能在JSFIDLE上使用它,cordova应用程序需要一个模拟器,而且这需要我放弃我的解析ID
$scope.$apply( function() { $scope.l = selectedItem; } );