我有一段非常简单的代码可以在我的数组上运行动态sortBy
。我使用select
和ng-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>
答案 0 :(得分:2)
欢迎来到JavaScript的无类型世界。
您的错误实际上非常明显:$scope.changeOrder
成为函数和标准变量。在选择下拉列表中选择一个值后,它将不再是一个函数并恢复为标准变量。然后,你再也不能打电话了。
你最好把它分成两个变量。我建议使用$scope.orderState
和$scope.changeOrder
,其中orderState
只保留字符串,changeOrder
是您的功能。
答案 1 :(得分:0)
我认为问题是你的两个$ scope变量都有相同的名称。您尝试为$ scope.changeOrder分配函数和值。尝试将其拆分为两个变量