Я учащийся в угловой JS. Я тестирую $ http и устанавливаю соответствующее значение переменной области. Но это не работает. Ниже приведен фрагмент html.
<div ng-app="fileapp" ng-controller="myctl" ng-init="hidevar=true">
<div ng-hide="hidevar" class="ng-hide">
<table>
<tbody ng:repeat="x in dataobj">
<tr><td>{{x.url}}</td></tr>
</tbody>
</table>
</div></div>
ниже приведен сценарий обратного вызова с угловым js
success(function(data) {
console.log(data);
var d=angular.fromJson(data);
console.log('d is:'+d.url);
$window.alert(d.url);
$scope.dataobj=data;
//$scope.url=data.url;
$scope.hidevar =false;
Я получаю ожидаемое значение строки url в console.log, а также в window.alert. Но то же самое не получает refelected в $ scope.dataobj = data; и $ scope.hidevar = false;
Скрытая строка не устанавливает значение false, а также данные json из службы не устанавливаются в dataobj. Ниже приведен консольный вывод.
Я изменил список div как ниже, но все равно не повезло
<div ng-hide="hidevar" class="ng-hide">
<table>
<tbody>
<tr><td>{{dataobj.url}}</td></tr>
</tbody>
</table>
</div>
Я добавил скрытый раздел и обновил скрытую переменную внутри области действия, но это не отражает.
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/0.9.4/angular-material.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=RobotoDraft:300,400,500,700,400italic">
<!-- Angular Material Dependencies -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<!--<script src="app.js"></script> -->
</head>
<body ng-app="plnkrApp" ng-controller="DemoController" ng-init="myvar=true">
<h1>Array</h1>
<table>
<tbody ng:repeat="x in array">
<tr>
<td>{{x.url}}</td>
</tr>
</tbody>
</table>
<h1>Object</h1>
<table>
<tbody ng:repeat="x in object">
<tr>
<td>{{x}}</td>
</tr>
</tbody>
</table>
<div ng-hide="myvar">
<p>Hidden Section</p>
</div>
<script>
var app = angular.module('plnkrApp', []);
app
.controller("DemoController", function($scope) {
$scope.array = [ {url: 'test1'}, {url: 'test2'}, {url: 'test3'}];
$scope.object = {url: 'test1'};
$scope.myvar=false;
});
</script>
</body>
</html>
Скрытый раздел не отображается. Почему данные не привязаны к скрытой переменной?
Вы возвращаете объект, а не несколько объектов в массиве.
Выполнение ng-repeat
на этом объекте просто нужно {{x}}
вместо {{x.url}}
но это не так.
Создайте переменную области проверки с массивом из двух или более из этих объектов. Вы увидите, что он будет работать так, как вы хотите.
$scope.test = [ {url: 'test1'}, {url: 'test2'}, {url: 'test3'}];
Изменить: вот Plunkr, показывающий разницу: