NG-INIT不能正常工作

NG-INIT not working properly

本文关键字:工作 常工作 不能 NG-INIT      更新时间:2023-09-26

我尝试了几种方法,但由于某种原因,我无法让init方法在我正在构建的选项卡应用程序上工作。

我正在使用http(通过WordPress REST API)拉入JSON,并且必须使用"as"语法才能正常工作。一切工作一旦我点击初始选项卡,但我需要第一个选项卡加载页面加载。

应用程序如下:

JS: 
var homeApp = angular.module('homeCharacters', ['ngSanitize']);
homeApp.controller('characters', function($scope, $http) {
  $http.get("http://example.com/wp-json/posts?type=character").then(function(response) {
    $scope.myData = response.data;
  });
});
homeApp.filter('toTrusted', ['$sce',
  function($sce) {
    return function(text) {
      return $sce.trustAsHtml(text);
    };
  }
]);
HTML: 
<section class="characters" ng-app="homeCharacters" ng-controller="characters as myData">
  <div class="char_copy" ng-repeat="item in myData" ng-bind-html="item.content | toTrusted" ng-show="myData.tab === item.menu_order">
    {{ item.content }}
  </div>
  <div class="char_tabs">
    <nav>
      <ul ng-init="myData.tab = 0">
        <li ng-repeat="item in myData">
          <a href ng-click="myData.tab = item.menu_order">
            <img src="{{ item.featured_image.source }}" />
            <h3>{{ item.title }}</h3>
          </a>
        </li>
      </ul>
    </nav>
  </div>
</section>
<!--end characters-->

我假设有一些简单的我错过了。我要初始化的选项卡的menu_order内容为0。在MyData下的ng-inspector中显示选项卡:0

我将感激任何人可以提供的任何帮助!

当前发生的事情是当UI在页面上呈现时,ng-init指令首先得到处理,它评估myData.tab = 0并将myDatatab属性值设置为0。此后,当异步API完成时,检索到的数据再次分配给myData对象,这将清除旧的myData值。

你不应该在这种情况下使用ng-init。您应该将从ajax检索到的data设置为来自控制器本身的myData的另一个属性。

homeApp.controller('characters', function($scope, $http) {
  $scope.myData = { tab: 0 }; //set default tab
  $http.get("http://example.com/wp-json/posts?type=character").then(function(response) {
    $scope.myData.data = response.data;
  });
});

标记

<li ng-repeat="item in myData.data">