AngularJS v2不是一个函数?

时间:2018-03-13 15:50:49

标签: angularjs

我有一段非常简单的代码可以在我的数组上运行动态sortBy。我使用selectng-model来返回要排序的正确密钥。但是,我可以更改选择一次,orderBy工作。但是一旦我再次这样做,我就会得到一个非常奇怪的错误

控制器

//change task sort
$scope.changeOrder = 'task_date';
$scope.changeOrder = (filterTask) => {
  if (filterTask == "due") {
    $scope.changeOrder = 'task_date';
  } else if (filterTask == "imp")  {
    $scope.changeOrder = 'task_importence';
  }
};

模板

        <select ng-change=changeOrder(filterTask) ng-model="filterTask">
          <option value="due">Due First</option>
          <option value="imp">Importance</option>
        </select>

       <task-item ng-repeat="task in $ctrl.user.task | orderBy : changeOrder"></task-item>

这是错误 - 没有任何名为&#34; v2&#34;在我的系统中typeerrror

2 个答案:

答案 0 :(得分:2)

欢迎来到JavaScript的无类型世界。

您的错误实际上非常明显:$scope.changeOrder成为函数标准变量。在选择下拉列表中选择一个值后,它将不再是一个函数并恢复为标准变量。然后,你再也不能打电话了。

你最好把它分成两个变量。我建议使用$scope.orderState$scope.changeOrder,其中orderState只保留字符串,changeOrder是您的功能。

答案 1 :(得分:0)

我认为问题是你的两个$ scope变量都有相同的名称。您尝试为$ scope.changeOrder分配函数和值。尝试将其拆分为两个变量