AngularJS 1.4 - CRUD - 无法添加虚拟JSON数据

时间:2015-08-03 21:03:56

标签: json angularjs

我在AngularJS 1.4中尝试简单的CRUD,这里是链接。

http://plnkr.co/edit/N7GOW17PaUGEYSgz1zut?p=preview

当我尝试使用下面的代码在JSON字符串中添加员工时,它无效。

$scope.employees.push($scope.employee);

参考:我遵循本教程使用旧版AngularJS https://www.youtube.com/watch?v=5uhZCc0j9RY

2 个答案:

答案 0 :(得分:3)

控制器不是单例,每次加载请求它们的页面时都会启动它们。您的addController实际上正在更新employees值,但$location.path()正在导航回listControlleremployees正在重新运行并重置您的employes。< / p>

此问题的一个解决方案是使用服务。您可以创建一个包含这些内容的服务,而不是在$scope上定义crudApp.service('employeeService', function(){ this.employees = [{ name: 'Jay', city: 'London', age: '36' }, { name: 'Mohan', city: 'Chennai', age: '44' }]; }); crudApp.controller('listController', function($scope, employeeService) { $scope.employees = employeeService.employees; }); crudApp.controller('addController', function($scope, $location, employeeService) { $scope.employee = { name: "", city: "", age: "" }; $scope.add = function() { employeeService.employees.push($scope.employee); $location.path('/'); }; }); 。服务是单件,可以注入任何需要访问这些属性的控制器。

class CarTypeRegister {
protected:
CarTypeRegister(enum CarType type) {
    types[type] = this; /* -Creating a static variable from child class will register the type to the factory */
}
virtual ~CarTyperegister() {
}

public:
static CarTypeRegister *types[END_OF_CARTYPE];

virtual Car *construct() = 0;
};

CarTypeRegister *CarTypeRegister::types = {nullptr};

Car * CarFactory::create(CarType type)
{
    if (!CarTypesRegister::types[type])
          return nullptr;
    return CarTypesRegister::types[type]->construct();
}

http://plnkr.co/edit/HkCrmu1IFqnoyn62bPUt?p=preview

答案 1 :(得分:0)

正在添加员工。问题是在添加员工之后,您正在重新加载页面,这有效地重新加载应用程序并重置初始状态。由于您正在使用内存列表,因此更改将丢失。如果您没有数据库,请考虑使用本地存储。