【问题标题】:ng-show not working properly on initial page loadng-show 在初始页面加载时无法正常工作
【发布时间】:2016-07-26 22:25:33
【问题描述】:

所以我正在使用 html、css 和 Angular.js 制作网页,我想根据用户在下拉列表中选择的内容来显示页面。当用户选择他/她的选择时,“过滤器”工作得很好,但最初在加载页面时我无法显示整个页面内容,而是显示一个空白页面。

这是我的代码的 sn-p:

<select ng-model="selectedOption" ng-options="data.id as data.name for data in myData.categories"></select>
    <div class="main"  >
        <ul id="cbp-ntaccordion" class="cbp-ntaccordion" ng-repeat="data in myData.profiles" ng-show="selectedOption == data.category" >
            <li class="cbp-ntopen">
                <h3 class="cbp-nttrigger">{{data.name}}</h3>
                <div class="cbp-ntcontent">

我收到如下错误:

angular.js:13708Error: [ngRepeat:dupes] errors.angularjs.org/1.5.7/ngRepeat/dupes?

【问题讨论】:

  • 您是否遇到任何控制台错误?
  • 是的,它类似于“angular.js:13708Error: [ngRepeat:dupes] errors.angularjs.org/1.5.7/ngRepeat/dupes?”
  • 您需要在此处使用track by [property] 以避免重复错误。它可能是内置的 $index 属性,或者是您正在重复的对象的属性。类似ng-repeat="data in myData.profiles track by $index"
  • 好的,但是页面最初加载空白怎么样,你能帮我吗
  • 出于 ng-model 的目的,您应该使用一个对象。但是,如果您删除 ng-show,页面加载正常?

标签: javascript jquery html angularjs


【解决方案1】:

你可以使用 ng-value="defalutvalue" 所以你的代码是这样的

<select ng-model="selectedOption" ng-value="defalutvalue" ng-options="data.id as data.name for data in myData.categories"></select>
<div class="main"  >
    <ul id="cbp-ntaccordion" class="cbp-ntaccordion" ng-repeat="data in myData.profiles" ng-show="selectedOption == data.category" >
        <li class="cbp-ntopen">
            <h3 class="cbp-nttrigger">{{data.name}}</h3>
            <div class="cbp-ntcontent">

【讨论】:

    【解决方案2】:

    根据您提到的错误,我认为您并没有给 Angular 提供一种方法来弄清楚如何将您的对象标记为唯一。在ng-repeat 中使用track by 表达式。

    所以你的ng-repeat 会变成:ng-repeat="data in myData.profiles track by $index"

    请参阅 ngRepeat 文档的 Tracking and Duplicates 部分。

    <ul id="cbp-ntaccordion" class="cbp-ntaccordion" ng-repeat="data in myData.profiles track by $index" ng-show="selectedOption == data.category">
    

    【讨论】:

    • 修复了 ngRepeat:dupes 错误并阅读了文档...谢谢老兄,但你能帮我解决 ng-show 的问题吗
    • @Harun 除了[ngRepeat:dupes] 错误之外,您还收到新的控制台错误吗?
    猜你喜欢
    • 2014-10-16
    • 1970-01-01
    • 2023-03-11
    • 2015-05-23
    • 2014-04-27
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多