Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
空字符串上的AngularJS筛选器_Angularjs_Filtering - Fatal编程技术网

空字符串上的AngularJS筛选器

空字符串上的AngularJS筛选器,angularjs,filtering,Angularjs,Filtering,我有一个简单的角度过滤器之间的选择和列表设置。当用户从下拉列表中选择项目时,列表将更新以显示匹配结果。问题是我有一个选择。。。在下拉列表中选择第一个选项,不带任何值,当该值为选定值时,将显示所有项目。我想这是有道理的,但我想要相反的结果。如果所选选项没有值,我不想显示列表。以下是一些相关位,后面是指向完整小提琴的链接: 下拉列表: <select class="world-list" ng-model="selectedWorld" ng-options="world.worldId as

我有一个简单的角度过滤器之间的选择和列表设置。当用户从下拉列表中选择项目时,列表将更新以显示匹配结果。问题是我有一个选择。。。在下拉列表中选择第一个选项,不带任何值,当该值为选定值时,将显示所有项目。我想这是有道理的,但我想要相反的结果。如果所选选项没有值,我不想显示列表。以下是一些相关位,后面是指向完整小提琴的链接:

下拉列表:

<select class="world-list" ng-model="selectedWorld" ng-options="world.worldId as world.worldName for world in allWorlds">
    <option value="">Select...</option>
</select>
名单如下:

<ul class="unstyled" id="charList">
    <li ng-repeat="char in characters | filter:selectedWorld">
        <a href="#" class="btn btn-block" ng-click="selectChar()">{{char.charName}} - {{char.charRace}} {{char.charClass}}</a>
    </li>
</ul>
这里有一个指向full fiddle的链接,其中包含我的JSON结构,它驱动了所有这些:

我想做的很简单,而且我对Angular很陌生,所以我确信我遗漏了一些明显的东西。检查了Jabbr房间,无人值班:


无论如何,谢谢你的帮助

> P>我注意到在您的代码脚本中,JS似乎不考虑空白选项。

我没有测试这个,我可能应该在提出这个答案之前,但是应该把空白选项放在你的脚本中。JS.<

app.controller('WorldCtrl', function ($scope, $http) {
    $scope.allWorlds = [{
      worldId: "",
      worldName: ""
    },
    {
      worldId: "b8ee0530-744b-463e-9428-23178f6c7bff",
      worldName: "World 1"
    },
    {
      worldId: "81211982-5613-4f9c-b704-7b6fa35faf84",
      worldName: "World 2"
    },
    {
      worldId: "df41208e-e8d2-46c9-8299-8f37632a51f8",
      worldName: "World 3"
    }];

    $scope.characters = [{
      charClass: "Rogue",
      charName: "Vaes",
      charRace: "Human",
      worldId: "b8ee0530-744b-463e-9428-23178f6c7bff"
    },
    {
      charClass: "Warrior",
      charName: "Azash",
      charRace: "Orc",
      worldId: "b8ee0530-744b-463e-9428-23178f6c7bff"
    },
    {
      charClass: "Mage",
      charName: "Anele",
      charRace: "Ogre",
      worldId: "81211982-5613-4f9c-b704-7b6fa35faf84"
    }];
});

实现这一点的一种方法是根据迭代对象的特定属性进行过滤:

<ul class="unstyled" id="charList">
  <li ng-repeat="char in characters | filter:{worldId: selectedWorld}">
    <a href="#" class="btn btn-block" ng-click="selectChar()">{{char.charName}} - {{char.charRace}} {{char.charClass}}</a>
  </li>
</ul>

工作得很有魅力!谢谢你,斯图在1.1.5版本中,这将不再有效-这是1.1.5版本中的一个分支,它不会接受我的编辑,因为这只是一个间距问题,但在最后一行和app.controller行之前添加四个空格或一个制表符以修复格式。是的,在发布答案之前进行测试通常是一件好事: