javascript - 更改 ng-model 中的 Children 值

标签 javascript angularjs

在下面的代码中,如果我们单击 Div,它将在输入框中显示标签子值,我必须从其中更改标签名称,但是当我尝试更改值时,它会删除剩余的输入文本和所有标签对于 Div,你能告诉我如何解决这个问题吗?

DEMO

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

  app.controller('MainCtrl', function($scope) {
    $scope.textVal = 'click on User Name';

  $scope.selectedEvent = {};
$scope.setText = function (element) {
    $scope.selectedEvent = element;
    $scope.textVal = angular.element(element.currentTarget).find('label').html();

};
$scope.changeLabelText = function () {
  //  $scope.selectedEvent.innerHTML = $scope.textVal;
    angular.element($scope.selectedEvent.currentTarget).html($scope.textVal);
   // $scope.selectedEvent.currentTarget.innerHTML = $scope.textVal;
};

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

  <head>
    <script data-require="jquery@*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
    <script data-require="angular.js@1.4.8" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" >
    <script src="script.js"></script>
  </head>
<body ng-controller="MainCtrl">

 <input type="text" ng-model="textVal" ng-change="changeLabelText($event)">//change user name here//
<div  ng-click="setText($event)">
  <label>User Name</label><br/>
  <input type="text" placeholder="enter username">
</div>
</body>

</html>

最佳答案

我认为一个更加 jQueryish 的解决方案将是

var app = angular.module('my-app', [], function() {})

app.controller('AppController', function($scope) {
  $scope.textVal = 'click on User Name';

  $scope.label = {
    userName: 'User Name'
  }

  $scope.setText = function(key) {
    $scope.currentKey = key;
    $scope.textVal = $scope.label[$scope.currentKey];
  };
  $scope.changeLabelText = function() {
    $scope.label[$scope.currentKey] = $scope.textVal;
  };
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="my-app">
  <div ng-controller="AppController">
    <input type="text" ng-model="textVal" ng-change="changeLabelText()">
    <div ng-click="setText('userName')">
      <label>{{label.userName}}</label>
      <br/>
      <input type="text" placeholder="enter username">
    </div>
  </div>
</div>

关于javascript - 更改 ng-model 中的 Children 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35312456/

相关文章:

javascript - 更新数组的一项

javascript - 目标 ="_self"未重新加载页面

javascript - 错误: [$compile:tpload] Failed to load template in Angular

javascript - 在 Angular UI Bootstrap 日期选择器中附加工作日标签的点击事件

javascript - 如何在指令中定义两个 ng-click 函数?

php - 如何修复 PHP 表单验证器错误?

javascript - 通过 render_javascript 将 javascript 变量传递给 partial

javascript - 来自HTML图像的jsPDF导致pdf为空

angularjs - Spring 微服务、无状态 session 、 Angular 和静态文件服务

javascript - 如何将元素插入数组而不重复它们?