按照角度,在演示之后,我可以将控制器定义为:

function TodoCtrl($scope) {
    $scope.todos = [
                    {text:'learn angular', done:true},
                    {text:'build an angular app', done:false},
                    {text:'empty dishwasher', done:false}];

    $scope.oldtodos = [];
    var oldtodos2 = [];
    ...


您会注意到我有两个oldtodos。一个在$ scope上,另一个只是一个本地变量。我认为如果要封装此变量,则采用后一种方法-即除控制器外没有其他人对此感兴趣,而如果要将变量传递回模型则前者是好的

我对么?

最佳答案

看来您只是想保留oldTodos的私人副本,以防您必须回头参考它们或使它们中的一个复活。在这种情况下,不将oldTodos放入示波器可能很有意义。正如Maxim所言,如果要将值绑定到视图,则范围是相关的。如果您只想保存oldTodos以便保留对它们的引用,则可以使用普通变量。

然后,如果您想带回其中之一,只需将其复制到$ scope.todos中,然后将其返回。

请注意,您还可以将所有待办事项抽象到服务中,并将服务注入到控制器中,以进行另一级别的封装和更好的测试策略。如果需要,它还使您能够在控制器之间共享待办事项。

08-18 23:21