我在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
答案 0 :(得分:3)
控制器不是单例,每次加载请求它们的页面时都会启动它们。您的addController
实际上正在更新employees
值,但$location.path()
正在导航回listController
,employees
正在重新运行并重置您的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();
}
答案 1 :(得分:0)
正在添加员工。问题是在添加员工之后,您正在重新加载页面,这有效地重新加载应用程序并重置初始状态。由于您正在使用内存列表,因此更改将丢失。如果您没有数据库,请考虑使用本地存储。