2015-12-26 16 views
5

Tôi là người mới bắt đầu trong phát triển ngăn xếp MEAN và làm một Ứng dụng Todo trong đó tôi đang tạo các bảng tính và sau đó lưu trữ trong các công việc trong bảng tính cụ thể bằng cách sử dụng angularjs.Có thể gọi một chức năng cụ thể từ bộ điều khiển trong angularj không?

Ban đầu, tôi chỉ đang truy xuất tất cả các biểu tượng mà không xem xét đến bảng tính nào thuộc về cũng như tạo các todos khi di chuyển. Bây giờ tôi muốn tăng cường nó để lấy các todos chỉ cho bảng tính cụ thể đó. Vì tôi tự động tải nó, tôi đang sử dụng routeProvider với giá trị '/:TaskID', trong đó TaskID đang thay đổi. Vì vậy, nếu TaskID tồn tại tôi đang sử dụng một chức năng, nếu không lấy tất cả mọi thứ.

Something như thế này:

if($routeParams.TaskID) { 
     var id = $routeParams.TaskID; 
     Todos.getTodosForId(id) 
      .success(function(data) { 
       $scope.loading = false; 
       $scope.formData = {}; // clear the form so our user is ready to enter another 
       $scope.todos = data; // assign our new list of todos 
      }); 
    } else { 

    // GET===================================================================== 
    // when landing on the page, get all todos and show them 
    // use the service to get all the todos 
    Todos.get() 
     .success(function(data) { 
      for(var i = 0; i < data.length; i++) { 
       $scope.todos.push(data[i]); 
      } 
      $scope.loading = false; 
     }); 
    } 

Thay vì sử dụng if-else, là nó có thể để giữ cho chúng độc lập? Giống như tôi muốn giữ cho cả hai người trong số họ có thể sử dụng loại bỏ tình trạng đó. Có thể gọi phương thức trên đây: Đối đặc biệt taskID:

.when('/:TaskID', 
    { 
     templateUrl: "app.html", 
     controller: "mainController" 
    }) 

For All Todos:

.when('/', 
    { 
     templateUrl: "app.html", 
     controller: "mainController" 
    }) 

câu hỏi khác là, làm thế nào để hiển thị todos chỉ cho rằng đặc biệt tasksheet khi tạo bảng tính?

Như thể hiện trong hình ảnh, trang web của tôi đang hiển thị tất cả các todos, thay vì một trong đó là chưa được tạo ra. Vì vậy, thay vì hiển thị tất cả các todos, ban đầu nó sẽ hiển thị cho tôi No Todos. Một khi tôi bắt đầu thêm các todos, tôi sẽ chỉ thấy những todos dưới bảng tính đó. Tôi hơi bối rối, về cách tôi nên đi vòng quanh để đạt được nó?

+1

Cả hai đều có thể, Bạn có thể tạo các nhiệm vụ hai tuyến đường khác nhau '/all 'và' tasks /: taskId 'HOẶC xác định một nhiệm vụ tuyến đường /: ID và chuyển Id thực hoặc' Tất cả 'làm tham số và thực hiện IF/ELSE như bạn làm ngay bây giờ. – codin

+0

Ngoài ra, bạn không cần phải làm '$ scope.todos.push (dữ liệu [i]);' và có thể bỏ qua vòng lặp hoàn toàn bằng cách chỉ thực hiện '$ scope.todos = data;' – codin

+0

Vâng, đó là các nhiệm vụ có thể có/all' và 'tasks /: taskId' và thậm chí tôi đang làm một chút. Nhưng làm thế nào để gọi những chức năng cụ thể đó? Điều này sẽ thả chúng vào bộ điều khiển, nhưng những gì về chức năng? –

Trả lời

0

Nếu bạn muốn gọi những chức năng bất cứ nơi nào trong điều khiển của bạn và trong mẫu của bạn, bạn có thể gán chúng vào biến $scope như thế này:

$scope.cleanForm = function(data) { 
    $scope.loading = false; 
    $scope.formData = {}; 
    $scope.todos = data; 
}; 

$scope.loadForm = function(data) { 
    $scope.todos = data; 
    $scope.loading = false; 
}; 

if($routeParams.TaskID) { 
    var id = $routeParams.TaskID; 
    Todos.getTodosForId(id).success($scope.cleanForm(data)); 
} else { 
    Todos.get().success($scope.loadForm(data)); 
} 
Các vấn đề liên quan