AngularJS中的纯功能控制器

时间:2015-07-17 04:16:58

标签: 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 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中使用纯函数技术。

1 个答案:

答案 0 :(得分:2)

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

你可以抽象到某种程度,但就是这样。没有比这更好的了。