Угловая переменная области видимости не установлена

0

Я учащийся в угловой 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. Ниже приведен консольный вывод.

Изображение 174551

Я изменил список 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>

Скрытый раздел не отображается. Почему данные не привязаны к скрытой переменной?

Теги:

1 ответ

0

Вы возвращаете объект, а не несколько объектов в массиве.

Выполнение ng-repeat на этом объекте просто нужно {{x}} вместо {{x.url}} но это не так.

Создайте переменную области проверки с массивом из двух или более из этих объектов. Вы увидите, что он будет работать так, как вы хотите.

$scope.test = [ {url: 'test1'}, {url: 'test2'}, {url: 'test3'}];

Изменить: вот Plunkr, показывающий разницу:

http://embed.plnkr.co/6wSuAPHPCSZF60Pph85V/

  • 0
    Привет, пожалуйста, смотрите мое редактирование. Это не работает, даже если заменить список. со столом.
  • 0
    Вы жестко закодировали ng-hide в своем классе: class = "ng-hide". Это никогда не появится
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню