Javascript 如何使用函数更改ng init值?

Javascript 如何使用函数更改ng init值?,javascript,angularjs,Javascript,Angularjs,这是我的Html和JavaScript代码,我想通过函数对其进行更改 Html: <div class="container" ng-app="myApp" ng-controller="myController"> <h2>{{title}}</h2> <ul ng-init="initItems()"> <li ng-repeat="item in items"> <input ng-model="

这是我的Html和JavaScript代码,我想通过函数对其进行更改

Html

<div class="container" ng-app="myApp" ng-controller="myController">
  <h2>{{title}}</h2>
  <ul ng-init="initItems()">
    <li ng-repeat="item in items">
      <input ng-model="item.name" type="text"/>
      <div ng-if="makeVisible == item.id  && makeVisible !='' ">
        <input ng-model="newname" type="text"/>
        <button ng-click="hideme(item.id);  rename()" type="button">
          <span class="glyphicon glyphicon-ok">
          </span>
        </button>
        <button ng-click="hideme(item.id)" type="button">
          <span class="glyphicon glyphicon-remove">
          </span>
        </button>
      </div>
      <input ng-click=" showme( item.id)" type="button" value="Rename"/>
    </li>
  </ul>
</div>
这里是输入框1中显示的
ng init
中的值,我想在单击时用第二个输入框的值来更改它。我该怎么做?
我还在按钮上添加了一个函数。

在项目中添加可见属性

function item(id, name) {
    this.id = id;
    this.visible=false;
    this.name = name;
}
并将显示和隐藏功能更改为此代码

$scope.hideme = function(item) {
     item.visible=false;
};

$scope.showme = function(item) {
     item.visible=true;
};
<div ng-if="makeVisible == item.id  && makeVisible !='' ">
并更改此代码

$scope.hideme = function(item) {
     item.visible=false;
};

$scope.showme = function(item) {
     item.visible=true;
};
<div ng-if="makeVisible == item.id  && makeVisible !='' ">

致:


并将item对象发送到shomme和hideme函数

<input ng-click="showme(item)" type="button" value="Rename"/>


<button ng-click="hideme(item);  rename()" type="button">
    <span class="glyphicon glyphicon-ok">
    </span>
</button>
<button ng-click="hideme(item)" type="button">
    <span class="glyphicon glyphicon-remove">
    </span>
</button>

当您使用
ng if
时,仅当项目处于重命名模式时,新名称模型才可用

所以,你可以这样做:

功能项(id、名称){
this.id=id;
this.name=名称;
};
有棱角的
.module('myApp',[])
.controller('myController',函数($scope){
$scope.items=[];
$scope.makeVisible='';
$scope.title='在此处输入新名称';
$scope.initItems=函数(){
$scope.items.push(新项('0','Vikash'));
$scope.items.push(新项('1','Kumar');
$scope.items.push(新项('2','Vishal'));
$scope.items.push(新项('3','Ajay'));
};
$scope.showme=函数(id){
$scope.makeVisible=id;
};
$scope.hideme=函数(id){
$scope.makeVisible='';
};
$scope.rename=函数(项,新名称){
item.name=新名称;
}; 
});

{{title}}

据我所知,您希望通过单击(比如重命名按钮)触发的函数
rename
,将第一个输入框(
item.name
)的值更改为第二个输入框(
newname
)的值

解决方法是将
新名称
传递给函数

简化HTML:

<ul ng-init="initItems()">
    <li ng-repeat="item in items">
        <input ng-model="item.name" type="text" />
        <input ng-model="newname" type="text" />
        <input ng-click="rename(item, newname)" type="button" value="Rename" />
    </li>
</ul>

请参阅“工作”

Hi all,是否可以更新数组值?例如,我用kapil替换vishal。然后数组中vishal的值(在js文件中)应该是kapil。您可以看到显示数组,只需将
{{items}}
放在某个地方并检查它是如何变化的,例如:嘿,我可以在控制台中像这样打印“console.log({{items}')”吗。?我想在控制台中查看更新的数组值。我该怎么做呢?在控制器中是这样的:
console.log($scope.items)参见(
rename
function)。嘿,console.log(Sscope.items)它显示了如下结果{item,item,item,item}。
$scope.rename = function(item, newname_) {
    item.name = newname_;
};