Javascript AngularJS中的纯函数控制器

Javascript AngularJS中的纯函数控制器,javascript,angularjs,functional-programming,Javascript,Angularjs,Functional Programming,是否可以仅使用纯函数在AngularJS中编写控制器?我不知道该把状态保存在哪里,以及如何以一种纯粹的功能性方式操纵它 我正在使用Angular主页上的todo应用程序。我所能做的最好的事情就是分离出纯部分,并在控制器方法中调用它们 var _remaining = R.compose(R.length, R.filter(R.prop('done'))); var _archive = R.filter(R.compose(R.not, R.prop('done'))); class Tod

是否可以仅使用纯函数在AngularJS中编写控制器?我不知道该把状态保存在哪里,以及如何以一种纯粹的功能性方式操纵它

我正在使用Angular主页上的todo应用程序。我所能做的最好的事情就是分离出纯部分,并在控制器方法中调用它们

var _remaining = R.compose(R.length, R.filter(R.prop('done')));
var _archive = R.filter(R.compose(R.not, R.prop('done')));

class TodoListCtrl {
    constructor() {
        this.todos = [
            {text: 'learn angular', done: true},
            {text: 'build an angular app', done: false}];
        this.todoText = '';
    }
    remaining() {
        return _remaining(this.todos);
    }
    archive() {
        this.todos = _archive(this.todos);
    }
}

注:我正在做一项可行性研究,以了解是否有可能在AngularJS中使用纯功能性技术。

答案似乎很晚。尽管如此,我仍然会尝试。对于Angular 1,控制器作为100%纯函数是不可能的,因为
controller
旨在增强
$scope
(即使使用
controllerAs
语法),而这
$scope
是MVVM模式的关键。角度视图是这个
$scope
的副作用


你可以抽象到某种程度,但仅此而已。仅此而已。

在angular中,状态应保持在$scope或angular服务中。我正在使用建议的
controllerAs
语法。我的头撞到了同一个问题上,我开始读这本书:也许答案就在那里。。2年过去了,我们似乎一直在为此而头痛。2015年的一篇文章非常好:也是使用RxJs的另一种方法(angular2附带):