【问题标题】:How to add new key/value pair element to an existing array?如何将新的键/值对元素添加到现有数组?
【发布时间】:2016-09-05 22:50:47
【问题描述】:
var onHomePageLoaded = function(retMsg)
 {
  $scope.data = retMsg.data.records;
  $scope.data.link : 'http://www.newwebsite.com'

 }

在我将链接元素(键/值)添加到 javascript 对象后,我无法在 HTML 模板中获得相同的内容

<div ng-repeat="record in data">

  <a ng-href="{{record.link}}"> Click Here </a>

</div>

【问题讨论】:

  • 什么意思?数组还是对象?有什么问题?
  • 请更新您的问题,您如何使用它。显示一些代码。
  • 你有不同的名字?!? reportrecord?
  • 它是record.link。对不起,这是一个错字。

标签: javascript jquery angularjs angular-directive


【解决方案1】:

我发现您的代码存在一些问题。

首先,您在ng-repeat 中使用变量名称record,然后在ng-href 中使用report。我想那些应该是一样的。

另外,link 不是record 的成员,它是data 的成员。您在此处将其设置为data 的成员:$scope.data.link : 'http://www.newwebsite.com'。如果您想将该链接添加到每个record,在您的onHomePageLoaded 函数中,您需要遍历您添加到data 的所有记录,并将link 属性添加到每个记录。

【讨论】:

    【解决方案2】:

    对不起。不知道我理解的好不好。

    也许您可以将 scope.data 定义为:

    $scope.data = {retMsg.data.records}
    

    然后例如一个函数:

        $scope.addNew = funtion(){
         $scope.data.newElement = $scope.viewElement
        };
    

    在您的 HTML 中

      <label>{{data}}</label> // Which makes reference to the $scope.data at the controller 
      <input ng-change="addNew()" ng-model="viewElement"></input>
      <label>{{data.newElement}} // Will be empty at the very beginning but will show the new element once it is created.
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      Javascript 是一种动态语言。您可以通过一种非常简单的方式将属性添加到现有对象,例如为现有属性分配值。只需添加一个新属性

      $scope.data.link = 'http://www.newwebsite.com'
      

      如果retMsg.data.records 是一个数组,您仍然可以向$scope.data 添加一个属性。

      如果您希望数组中的每个对象都有不同的链接,那么请执行此操作。

      $scope.data.forEach(function(obj){
          obj.link = "your custom link" // write your logic here to produce different link.
      });
      

      【讨论】:

      • 但是如果我使用 ng-repeat 并像 data.link 一样访问,我将无法访问我的 HTML 中的链接?
      • 你想要每个对象的链接相同还是每个项目的链接不同
      • 我想要每个对象的不同链接。 @ZohaibIjaz,我更新了我的 html 模板。
      • 如何生成链接??因为您希望所有对象都不同。
      • 我有一个 api,它会给我每个项目的随机链接。
      【解决方案4】:

      如果 data 是一个可以使用的数组

      $scope.data.push(yourData);
      

      例如

      $scope.data.push({link : 'http://www.newwebsite.com'});
      

      或者,如果您想访问数组中的对象并为它们添加键值对,您可以执行以下操作:

      // add the link to the first entry
      $scope.data[0].link = 'http://www.newwebsite.com';
      

      【讨论】:

        猜你喜欢
        • 2014-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-25
        • 1970-01-01
        • 1970-01-01
        • 2021-06-27
        相关资源
        最近更新 更多