AngularJS:在服务中修改服务不会更新控制器

ilovelamp

我将模型放在Service中,我所有的模型都在一个对象中,我希望能够通过将模型重新分配给一个空对象来重置我的模型,但这似乎不起作用,但是如果我删除一个它直接做财产。

如何重置我的模型而不必删除每个属性,刷新页面或进行大的更改?

(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这是不可能的,因为我与许多控制器共享我的服务

jh3y

我认为解决您的问题的一种方法是创建一个默认的模型变量(如master副本),并angular.copy在调用该方法时使用两个参数将模型重置为主版本。

请参阅此处angular.copy文档您会注意到实时演示实际上显示了重置功能。

我已经更新了现场演示plunker表现出的行为,我认为你的愿望的http://plnkr.co/edit/BJ ...

希望对您有所帮助!

更新::

虽然可能需要测试,但可能的实现方式如下:

myApp.service('MyService', function () {
    var masterModel = {x: 1};
    var obj = {
      model: {x: 1},
      functions: {
        resetModel: function() {
          angular.copy(masterModel, obj.model);
        }
      }
    };
    return obj;
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS:如何从多个控制器修改服务中的数组

来自分类Dev

AngularJS服务更新控制器变量

来自分类Dev

为什么在 angularjs 的另一个控制器中修改服务后我的 UI 没有更新

来自分类Dev

AngularJS:控制器与服务

来自分类Dev

控制器中的变量不会更新,因为服务中的变量会在AgularJS中更改

来自分类Dev

当注入的服务上的值更新时,如何更新AngularJS(使用TypeScript)控制器中的值

来自分类Dev

AngularJS服务回调以更新控制器范围

来自分类Dev

AngularJS轮询服务未连续更新控制器

来自分类Dev

AngularJS通过服务自动更新控制器数据

来自分类Dev

服务返回的值未在 angularjs 中的控制器变量中更新

来自分类Dev

使用AngularJS服务从其他模块更新其他控制器中的作用域

来自分类Dev

服务不会注入控制器

来自分类Dev

所有控制器模板中的Angularjs服务变量

来自分类Dev

是否可以在AngularJS中配置控制器(如服务)?

来自分类Dev

AngularJS-从服务中调用控制器函数

来自分类Dev

在AngularJS中向控制器添加服务

来自分类Dev

AngularJS:无法解析指令控制器中的服务

来自分类Dev

从angularjs中的服务调用控制器功能

来自分类Dev

如何使用AngularJS在控制器中调用服务函数?

来自分类Dev

angularjs从服务中启动控制器范围

来自分类Dev

所有控制器模板中的Angularjs服务变量

来自分类Dev

父控制器的范围与AngularJS中的共享服务?

来自分类Dev

如何在AngularJS控制器中测试服务?

来自分类Dev

在angularJS中向控制器注入服务失败

来自分类Dev

在angularJs中从控制器调用同时的$ http服务?

来自分类Dev

将参数从控制器传递到angularjs中的服务

来自分类Dev

在控制器中调用AngularJS服务函数时出错?

来自分类Dev

AngularJS控制器和服务创建

来自分类Dev

AngularJs,在控制器中注入服务

Related 相关文章

  1. 1

    AngularJS:如何从多个控制器修改服务中的数组

  2. 2

    AngularJS服务更新控制器变量

  3. 3

    为什么在 angularjs 的另一个控制器中修改服务后我的 UI 没有更新

  4. 4

    AngularJS:控制器与服务

  5. 5

    控制器中的变量不会更新,因为服务中的变量会在AgularJS中更改

  6. 6

    当注入的服务上的值更新时,如何更新AngularJS(使用TypeScript)控制器中的值

  7. 7

    AngularJS服务回调以更新控制器范围

  8. 8

    AngularJS轮询服务未连续更新控制器

  9. 9

    AngularJS通过服务自动更新控制器数据

  10. 10

    服务返回的值未在 angularjs 中的控制器变量中更新

  11. 11

    使用AngularJS服务从其他模块更新其他控制器中的作用域

  12. 12

    服务不会注入控制器

  13. 13

    所有控制器模板中的Angularjs服务变量

  14. 14

    是否可以在AngularJS中配置控制器(如服务)?

  15. 15

    AngularJS-从服务中调用控制器函数

  16. 16

    在AngularJS中向控制器添加服务

  17. 17

    AngularJS:无法解析指令控制器中的服务

  18. 18

    从angularjs中的服务调用控制器功能

  19. 19

    如何使用AngularJS在控制器中调用服务函数?

  20. 20

    angularjs从服务中启动控制器范围

  21. 21

    所有控制器模板中的Angularjs服务变量

  22. 22

    父控制器的范围与AngularJS中的共享服务?

  23. 23

    如何在AngularJS控制器中测试服务?

  24. 24

    在angularJS中向控制器注入服务失败

  25. 25

    在angularJs中从控制器调用同时的$ http服务?

  26. 26

    将参数从控制器传递到angularjs中的服务

  27. 27

    在控制器中调用AngularJS服务函数时出错?

  28. 28

    AngularJS控制器和服务创建

  29. 29

    AngularJs,在控制器中注入服务

热门标签

归档