我在一个服务中有我的模型,我的所有模型都在一个对象中,我希望能够通过将我的模型重新分配给一个空对象来重置我的模型,但它似乎没有工作,但如果我直接删除一个属性,它会。AngularJS:服务中的修改服务不会更新控制器
如何重置我的模型而不必删除每个属性,刷新页面或做出重大更改?
(function() {
var myApp = angular.module('myApp', []);
myApp.controller('MyController', function (MyService) {
var _this = this;
_this.model = MyService.model;
_this.myService = MyService;
_this.deleteInService = function() {
MyService.functions.resetModel();
};
});
myApp.service('MyService', function() {
var obj = {};
obj.model = {x: 1};
obj.functions = {};
obj.functions.resetModel = function() {
//delete obj.model.x; //THIS WORKS!
obj.model = {x: 1}; //BUT THIS DOESN'T :(
};
return obj;
});
})();
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js"></script>
<script src="changingModelInService.js"></script>
</head>
<body ng-app="myApp" ng-controller="MyController as myCtrl">
{{myCtrl.model.x}}<div><input ng-model="myCtrl.model.x"/></div>
<button ng-click="myCtrl.deleteInService()">Delete X in service</button>
</body>
</html>
谢谢。
编辑:做_this.model = MyService.model因为我有许多控制器
你会怎么做这里面的服务? – ilovelamp
我已经更新了我的答案,尽管我不是100%,但它可以工作,因此需要一些测试。我认为理论上它应该工作。 – jh3y
是的,虽然它应该是这样的: angular.copy(masterModel,obj.model); 由于某些原因,这似乎并不适用于标签之间的Ionic(每个标签都有它的视图和控制器)。 – ilovelamp