Javascript 角度$scope未在HTML中显示正确的数据

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=

我有一个cordova应用程序,我想在其中显示位置的详细信息。由于某种原因,当我试图在HTMl中显示一个变量,而该变量在JS中被成功赋值时,什么也没有出现

JS控制器:

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