【问题标题】:How to Change each Appended text Angularjs如何更改每个附加文本Angularjs
【发布时间】:2016-01-12 02:52:01
【问题描述】:

在添加每个名称时,我没有使用附加事件而不是使用 ng-repeat 正确获得结果。您能帮我如何更改从单个输入字段添加的每个名称。告诉我不要在这里使用 ng-repeat,因为 ng-repeat 功能不适用于我进一步运行的功能,如果可以不使用 ng-repeat,您可以使用 jquery 或 javascript 解决这个问题。提前致谢.. Here is JSBin

var app = angular.module('myapp', ['ngSanitize']);

app.controller('AddCtrl', function ($scope, $compile) {

    $scope.my = {name: 'untitled'};
       $scope.add_Name = function (index) {
        var namehtml = '<label ng-click="selectName($index)">{{my.name}} //click<br/></label>';
        var name = $compile(namehtml)($scope);
        angular.element(document.getElementById('add')).append(name);
    };
   
    $scope.selectName = function (index) {
        $scope.showName = true;
    };

});
<!DOCTYPE html>
<html ng-app="myapp">

<head>
	<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-beta.2/angular.min.js"></script>
	<script src="https://code.angularjs.org/1.5.0-rc.0/angular-sanitize.min.js"></script>
</head>

<body ng-controller="AddCtrl">
	<button ng-click="add_Name($index)">Add Names</button>
	<div id="add"></div><br/>

	<form ng-show="showName">
      <label>Name Change(?)</label><br/>
	  <input ng-model="my.name">
	</form>
</body>

</html>

【问题讨论】:

  • 你为什么不写一个指令?你为什么讨厌ngRepeat
  • 我想以不同的形式添加名称,如果我使用 ng-repeat,当我想查看保存的表单以再次更改时,它显示不可见,我单击添加名称它正在添加多个名称单击一下..这就是为什么我不打算使用 ng-repeat..
  • 您缺少指向 .js 文件的
  • 如果我写了指令,我还必须在该指令模板中使用 ng-repeat.. 我也面临与 [ngRepeat] 相同的问题..
  • 不,我没有错过任何脚本。唯一的问题是在 div 中使用 ng-repeat。如果我们使用 ng-repeat,当我们重新打开保存的表单时,它将显示不可见, ,如果我们点击添加名称,那么只有它显示..你能告诉我如何解决这个问题吗...???

标签: javascript jquery angularjs


【解决方案1】:

如果我正确理解您正在寻找的内容,这应该可以工作。

HTML:

<body ng-controller="AddCtrl">
 <button ng-click="add_Name()">Add Names</button>
 <div ng-repeat="item in names">
  <label ng-click="selectName($index)">{{$index}}- {{item}} //click to change<br/></label>        
 </div>

 <form ng-show="showName">
  <label>Name Change at index {{nameIndex}}</label><br/>
  <input ng-model="names[nameIndex]">
 </form>
</body>

JS:

$scope.names = [];

$scope.add_Name = function(index){
 $scope.names.push('untitled')
}

$scope.selectName = function (index) {
    $scope.nameIndex = index;
    $scope.showName = true;
};

【讨论】:

  • 那很好..但我的要求是不需要在 div 中使用 ng-repeat ......你能不使用 ng-repeat 解决吗,即使在 jquery 或其他东西中也是如此......谢谢你跨度>
  • @Brian 您需要将其更改为ng-repeat="item in names track by $index"。添加相同名称时会出现问题。见this JSFiddle
  • 我希望我能说服你使用 ng-repeat :) @georgeawg .. 同意感谢你的理解。
  • 您能否在我的示例中添加一些内容来说明 ng-repeat 导致问题的地方?我认为最好的做法是帮助您以角度方式解决问题,因为您使用的是角度。
猜你喜欢
  • 2019-06-02
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 2013-06-12
  • 2019-04-09
  • 2011-07-31
  • 2016-09-22
  • 1970-01-01
相关资源
最近更新 更多