Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我能';如果不编辑数组中的对象,ng模型不会';不要用鼠标点击来改变_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 我能';如果不编辑数组中的对象,ng模型不会';不要用鼠标点击来改变

Javascript 我能';如果不编辑数组中的对象,ng模型不会';不要用鼠标点击来改变,javascript,html,angularjs,Javascript,Html,Angularjs,我正在制作一个电影库。我使用ng repeat来显示电影,每部电影都有一个编辑按钮和一个删除按钮。“删除”按钮工作正常,但“编辑”按钮不工作。 它应该打开一个面板,并用电影数据填充它,但它只打开面板,并使用我为索引定义的第一个值 button <i class="glyphicon glyphicon-pencil small btnEdit" ng-click="i =(movies.indexOf(movie));"></i> input <input typ

我正在制作一个电影库。我使用ng repeat来显示电影,每部电影都有一个编辑按钮和一个删除按钮。“删除”按钮工作正常,但“编辑”按钮不工作。 它应该打开一个面板,并用电影数据填充它,但它只打开面板,并使用我为索引定义的第一个值

button
<i class="glyphicon glyphicon-pencil small btnEdit" ng-click="i =(movies.indexOf(movie));"></i>

input
<input type="text" class="form-control" placeholder="Title" id="title" ng-model="movies[i].title">
按钮
输入

整个代码都在这里:

您的控制器的$scope属性“i”通过作用域继承背后的规则被隐藏。Ng repeat创建自己的隔离作用域,由于“i”是一个基元(它只是一个整数),“i”只在子$scope上设置,而不是在主父控制器的作用域上设置

<input type="text" class="form-control" placeholder="Title" id="title" 
       ng-model="movies[selected.movieIndex].title">

<i class="glyphicon glyphicon-pencil small btnEdit" 
   ng-click="selected.movieIndex =(movies.indexOf(movie));"></i>

这里有一个更新的JSFIDLE

注意我是如何使用一个对象(selected.movieIndex)来正确更新right属性的


这里有更多关于理解scope的确切行为的内容,这种方法将过多的业务逻辑放在视图中

当您执行类似操作时,将整个对象传递回控制器。然后在控制器中进行任何拼接、复制等操作:

  $scope.delete = function(movie){
    var idx = $scope.movies.indexOf(movie);
    if(idx !=-1){      
       $scope.movies.splice(idx,1)
    }
  }

  $scope.edit = function(movie){
     $scope.selectedMovie = movie;
  }
简化示例:

<div ng-repeat="movie in movies">
  <button ng-click="edit(movie)">
  <button ng-click="delete(movie)">
</div>
另外,还要去掉所有jQuery和bootstrap.js,并替换为angular ui引导