按照角度,在演示之后,我可以将控制器定义为:
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中,然后将其返回。
请注意,您还可以将所有待办事项抽象到服务中,并将服务注入到控制器中,以进行另一级别的封装和更好的测试策略。如果需要,它还使您能够在控制器之间共享待办事项。