在模板

时间:2016-07-09 03:59:42

标签: javascript angularjs

我一直在教自己有角度,我现在正在学习本教程https://docs.angularjs.org/tutorial,除了我没有克隆回购并使用不同的数据来保持它的趣味性。

我的问题可能是我犯的一个非常简单的错误,但我仍然试图理解框架的概念/术语,这使得难以搜索答案。

当我的模板看起来像这样..

<div>
 <ul>
   <li ng-repeat="electorate in $ctrl.electorates | filter:$ctrl.query | orderBy:$ctrl.orderProp">
     <p>{{electorate.electorate}}</p>
     <p>{{electorate.mp}} </p>
     <p>{{electorate.party}} </p>
   </li>
 </ul>

 <div> Search: <input ng-model="$ctrl.query"/>
   <p>
     Sort by:
     <select ng-model="$ctrl.orderProp">
       <option value="party">Party</option>
       <option value="mp">MP - Alphabetical</option>
     </p>
   </div>
</div> 

..我可以输入搜索输入框来过滤ng-repeat列表,并按选项排序顺序排序。

但是通过数据上方的搜索/排序选项看起来会更好..

<div>
 <div> Search: <input ng-model="$ctrl.query"/>
 <p>
   Sort by:
   <select ng-model="$ctrl.orderProp">
     <option value="party">Party</option>
     <option value="mp">MP - Alphabetical</option>
   </p>
 </div>
 <ul>
   <li ng-repeat="electorate in $ctrl.electorates | filter:$ctrl.query | orderBy:$ctrl.orderProp">
     <p>{{electorate.electorate}}</p>
     <p>{{electorate.mp}} </p>
     <p>{{electorate.party}} </p>
   </li>
 </ul>
 </div>

..除了显示按选项的搜索/排序外,ng-repeat数据永远不会出现。

为什么会这样,我如何让它以我想要的方式运作?

我没有看到我所做的和教程之间有任何重大差异(特别是在步骤3 - 7之间),我的猜测是由于搜索/排序在数据准备好之前引用数据,但是在教程这样结构没问题。

这是我的控制器

angular.
  module('electorateList').
  component('electorateList', {
    templateUrl: 'electorate-list/electorate-list.template.html',
    controller: function ElectorateListController($http){
          var self = this;
          self.orderProp = 'party';


          $http.get('electorates.json').then(function(response){
            self.electorates = response.data;
          });
        }
  });

如果有的话,感谢并随意指出我的副本。

编辑:感谢Lex指出我错过了select元素的结束标记,解决这个问题解决了这个问题。

1 个答案:

答案 0 :(得分:0)

您缺少结束</select>标记。