javascript - 将对象添加到服务中的数组

标签 javascript angularjs

我尝试使用 getTemplates 函数将一个对象添加到服务中的数组 savingTemplates 中。 我为此使用了一项服务,以便在多个 View 中访问模板。 不幸的是,如果我尝试调用我的函数,什么也不会发生。

services.js:

    .factory('templateData', function(){
  var savedTemplates = [
      {"name":"Adam Müller", "iban":"AT29100020003000","image":"adam.jpg"},
      {"name":"Ben Streicher","iban":"AT34900080007000","image":"ben.png"},
      {"name":"Max Krossmann","iban":"AT23400050006000","image":"max.png"}
  ];

  var getTemplates = function(){
    return savedTemplates;

  };

  var addTemplates = function(insertName,insertIban){
    savedTemplates.push=({"name": insertName, "iban": insertIban, "image": 'mike.png'});
    alert("This is savedTemplates:" + savedTemplates);
  };
  return {
    getTemplates:getTemplates,
    addTemplates:addTemplates
  };
})

模板保存.html:

<button  class="button button-large button-positive" ng-click="addTemplates(newreceiver,newiban)" ui-sref="tab.templates">
  Speichern
</button>

如果有任何帮助,我将非常感激,因为我已经很绝望了。

最佳答案

这是一个示例片段。

您的工厂 addTemplates 代码也有问题,您应该使用 savedTemplates.push ({ ... }],而不是 savedTemplates.push = ({ ... }]

片段

angular.module('app', []);

angular.
module('app')
  .controller('ExampleController', ['$scope', 'templateData', function($scope, templateData) {
    $scope.addTemplates = templateData.addTemplates;
  }])
  .factory('templateData', function() {
    var savedTemplates = [{
        "name": "Adam Müller",
        "iban": "AT29100020003000",
        "image": "adam.jpg"
      },
      {
        "name": "Ben Streicher",
        "iban": "AT34900080007000",
        "image": "ben.png"
      },
      {
        "name": "Max Krossmann",
        "iban": "AT23400050006000",
        "image": "max.png"
      }
    ];

    var getTemplates = function() {
      return savedTemplates;
    };

    var addTemplates = function(insertName, insertIban) {
      savedTemplates.push ({
        "name": insertName,
        "iban": insertIban,
        "image": 'mike.png'
      });
      console.log("This is savedTemplates:" + JSON.stringify(savedTemplates, null, 2));
    };
    return {
      getTemplates: getTemplates,
      addTemplates: addTemplates
    };
  });
<!doctype html>

<html lang="en" ng-app="app">

<head>
  <meta charset="utf-8">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.4/angular.min.js"></script>
  <script src="script.js"></script>
</head>

<body ng-controller="ExampleController">
  <button ng-click="addTemplates('Marty McFly', 'BTTF900080007000')">
  Speichern
</button>
</body>

</html>

关于javascript - 将对象添加到服务中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43957810/

相关文章:

javascript - 内联 js 有效,外部文件无效

javascript - 过滤映射并返回 ids 数组

angularjs - 在 MVC 应用程序中将 Power Bi 报告与 Angular JS 集成

javascript - 动态风格 - Angular

java - 如何在 Angularjs 中对字符串进行编码?

javascript - Uncaught ReferenceError : angular is not defined I am having trouble with a chrome extension

javascript - 如何将 Android webview 保存到 DOM,并从给定的 DOM 加载 webview?

javascript - 数据从 HTML 文本输入传递到 python 脚本

javascript - 为什么 stopPropagation 不阻止页面导航?

javascript - 拒绝在浏览器中设置不安全 header "Cookie"错误但请求成功