2015-07-21 72 views
0

第一次尝试获取json数据并使用AngularJS将其绑定到我的表单。我能够以这种方式绑定json,但它需要我手动将“data”匹配到我的html中的每个项目。从我的控制器AngularJS http get json

HTTP调用:

$http.get('static.json'). 
    success(function(data, status, headers, config) { 
     // here I have to manually copy all my json to bind with "data" 
     $scope.SiteID = data.SiteID; 
     $scope.SiteCode = data.SiteCode; 
    }). 
    error(function(data, status, headers, config) { 
    // log error 
    }); 

我的JSON:

{ 
    "SiteID":"mySiteIDGoesHere", 
    "SiteCode":"mySiteCodeGoesHere" 
} 

是否有我的JSON自动绑定,无需手动完成每个项目的方法吗?例如:

$http.get('static.json'). 
    success(function(data, status, headers, config) { 
     "just pull in whatever my json is and bind it" 
     $scope.WhateverIsInJSONID = data.WhateverIsInJSONID; 
     $scope.WhateverIsInJSONCode = data.WhateverIsInJSONCode; 
    }). 
    error(function(data, status, headers, config) { 
    // log error 
    }); 
+0

只需设置'$ scope.something = data',然后你的视图就会像:'{{something.WhateverIsInJSONID}}',或者其他任何 – Tom

回答

1

在你的成功的功能,绑定您的数据$范围。数据像这样:

$scope.data = data 

然后 - 你的HTML中,所有NG-模型,NG-值等将被绑定为这样:

<p>{{data.someKey}}</p><img ng-src="data.imgSrc" />.... 

此外,它的不安全以任意方式绑定许多键的范围。我并不是指偶尔的数据或任何被添加到范围内的东西。但是,当你盲目迭代一个对象并将每个键设置到$ scope时,可能会覆盖其他可能已设置的键或稍后在控制器中覆盖您的设置的键。也许你有一个函数附加到被盲分配覆盖的范围,反之亦然。

+0

Eureka那样工作。 – simple

+0

给我一些luv并检查它是否正确? – Brant

1

你可以只设置$scope.data = data; ...

然后在您的视图中,您可以访问data.SiteID,或data.SiteCode

1

如前所述,你可以简单地设置在$scopedata一个项目,然后引用它使用点符号,如:

$scope.data = data; 

然后:

<span>{{data.WhateverIsInJSONID}}</span> 

如果你想每个属性在$scope单独,你将不得不遍历他们,并添加它们,如:

for (var property in data) { 
    if (data.hasOwnProperty(property)) { 
    $scope[property] = data[property]; 
    } 
} 

这将使你$scope.WhateverIsInJSONID$scope.WhateverIsInJSONCode

+0

for循环示例的缺点是可能会覆盖附加到范围的以前的键。例如$ scope.someKey = function ...然后在返回的数据对象中有.someKey,然后覆盖你的函数。不安全。 – Brant

+0

@Brant,同意,我不会这样做,但要满足我添加它的问题。 – Tom

+0

想你是因为这个原因而添加的。 – Brant

-2

号在角你有一个内部的控制器将数据范围($范围)之一,那么您可以在HTML或者{{等等}}或使用访问ng-models指令,ng值等等。

+0

并非如此。 – Brant