首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工业及工业发展不正常

工业及工业发展不正常
EN

Stack Overflow用户
提问于 2016-10-25 20:32:06
回答 2查看 587关注 0票数 0

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

我正在使用http (通过WordPress REST )引入JSON,并且必须使用“as”语法才能使它正常工作。一旦我单击初始选项卡,一切都会正常工作,但我需要第一个选项卡来加载页面加载。

以下是应用程序:

代码语言:javascript
复制
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);
    };
  }
]);
代码语言:javascript
复制
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。在ng-检查器中,MyData下显示选项卡:0

我愿意接受任何人所能提供的任何帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-25 20:35:57

目前,当用户界面在页面上呈现时,首先对ng-init指令进行处理,计算myData.tab = 0并将myDatatab属性值设置为0,然后当异步API完成时,再将检索到的数据分配给myData对象,从而抹掉旧的myData值。

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

代码语言:javascript
复制
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;
  });
});

标记

代码语言:javascript
复制
<li ng-repeat="item in myData.data">
票数 1
EN

Stack Overflow用户

发布于 2016-10-25 20:36:59

在调用服务之前,您只需将您的作用域声明为emoty对象或null,然后它就可以工作了,如:$scope.myData = {};

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40249191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档