Javascript 我能';如果不编辑数组中的对象,ng模型不会';不要用鼠标点击来改变
我正在制作一个电影库。我使用ng repeat来显示电影,每部电影都有一个编辑按钮和一个删除按钮。“删除”按钮工作正常,但“编辑”按钮不工作。 它应该打开一个面板,并用电影数据填充它,但它只打开面板,并使用我为索引定义的第一个值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
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引导