在 angularjs 中使用删除单击的元素和范围
Working with remove clicked element and scoping in angularjs
HTML
<div ng-controller="BlogData" >
<form ng-submit="removeTodo()">
<ul>
<li ng-repeat="blog in bloges">
{{blog.name}}
<p>{{blog.mobile}}</p>
<p>{{blog.description}}</p>
<input class="btn-primary" type="submit" value="remove">
<p></p>
</li>
</ul>
</form>
<form ng-submit="addTodo()">
<label>Name:</label><input type="text" ng-model="todoName" size="30"
placeholder="add your name">
<label>Mobile:</label><input type="number" ng-model="todoMobile" size="30"
placeholder="add your mobile">
<label>Description:</label><input type="text" ng-model="todoDesc" size="30"
placeholder="add some description">
<hr>
<h1>Hello {{todoName }}!</h1>
<h1>Your mobile is {{todoMobile}}!</h1>
<h1>About my Details :- {{todoDesc}}!</h1>
<input class="btn-primary" type="submit" value="add">
</form>
</div>
.JS
function BlogData($scope) {
$scope.bloges = [
{"name": "Nexus S",
"mobile": "858485454",
"description": "The nest to seehow it works"},
{"name": "Motorola XOOM™ with Wi-Fi",
"mobile": "8584453454",
"description": "The nest to ytrb dsfhgs gvd m seehow it works"},
{"name": "MOTOROLA XOOM™",
"mobile": "443485454",
"description": "The nest bla bla vd fg hvto seehow it works"}
];
$scope.addTodo = function() {
$scope.bloges.push({name:$scope.todoName, mobile:$scope.todoMobile, description:$scope.todoDesc, done:false});
$scope.todoName = '';
$scope.todoMobile = '';
$scope.todoDesc = '';
};
$scope.removeTodo = function() {
$scope.bloges.pop({name:$scope.todoName, mobile:$scope.todoMobile, description:$scope.todoDesc, done:false});
$scope.todoName = '';
$scope.todoMobile = '';
$scope.todoDesc = '';
};
}
var blogApp = angular.module('blogApp',[]);
blogApp.controller('BlogData', BlogData);
我在删除元素时遇到问题。当我单击删除它删除最后一个元素时。我也尝试过拼接,但未能取得成功。
这是一个小提琴
一些与 Angular 实现相关的问题:-
我们需要使用表单操作
ng-submit="addTodo()"
或者我们需要使用<button ng-click="addTodo(">
请区分。任何人都可以在完全灵活的 Web 应用程序中以实际方式定义正确的范围吗?
请指导我..谢谢!!
您可以
查看列表中的每个值,返回一个包含 all 的数组 通过真值检验的值(迭代器)。代表 本机筛选器方法(如果存在)。
尝试两个选项filter
和splice
滤波器
.HTML
添加ng-click="theFilter(blog)
<input class="btn-primary" type="submit" value="remove" ng-click="splice(blog, bloges)">
- 要使用_filter:
喜欢:
.JS
$scope.theFilter = function(field) {
$scope.bloges = _.filter($scope.bloges, function(nodeClient) {
return !(nodeClient.name == field.name &&
nodeClient.mobile == field.mobile &&
nodeClient.description == field.description
);
});
};
见小提琴
其他方式是:
添加ng-click="splice(blog, bloges)
拼接
.HTML
<input class="btn-primary" type="submit" value="remove" ng-click="splice(blog, bloges)">
.JS
$scope.splice = function(field, fields) {
fields.splice(fields.indexOf(field), 1);
};
见小提琴
作为旁注
_filter
的工作原理:
_.filter(list, iterator, [context])
别名:选择查看列表中的每个值,返回一个包含 all 的数组 通过真值检验的值(迭代器)。代表 本机筛选器方法(如果存在)。
var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });=> [2, 4, 6]
由于流行,它将删除最后一个元素。您需要找到要查找的元素的索引并将其拼接。为简洁起见,使用短划线:
$scope.removeTodo = function() {
var index = $scope.bloges.indexOf({name:$scope.todoName, mobile:$scope.todoMobile, description:$scope.todoDesc, done:false}, 0);
$scope.bloges.splice(index, 1);
$scope.todoName = '';
$scope.todoMobile = '';
$scope.todoDesc = '';
};
理想情况下,您实际上会从视图中传入"博客",这样您就不需要每次在删除时都进行对象表示。
$scope.removeTodo = function(blog) {
var index = $scope.bloges.indexOf(blog, 0);
$scope.bloges.splice(index, 1);
$scope.todoName = '';
$scope.todoMobile = '';
$scope.todoDesc = '';
};
相关文章:
- 在MVVM视图模型中处理应用程序范围的元素
- 如何设置范围元素'的拇指
- html,js-如何限制元素"范围“-命名空间
- JavaScript:将输入范围行为链接到另一个元素
- 如何从不同范围外的元素属性中获取求值表达式
- 访问内部功能范围的元素,而不是敲除中的外部
- 范围和列表元素在 DIV 中换行
- 基于范围数据更改指令模板中的元素
- 获取范围中包含的HTML元素
- 将持久活动类附加到导航栏范围中的导航元素(AngularJS)
- 如何选择html5范围's在JavaScript中的伪元素
- 如何获取数组第一个元素的范围
- 隔离范围元素上的角度动画
- 使用 Jquery 将元素的一些文本包装在一个范围中
- 隐含:元素和范围
- 控制器和指令请求同一元素上的隔离范围
- 使用jQuery和CSS选择元素范围
- 如何用js/jquery显示相同类的元素范围
- 当拖动结束时,HTML输入元素范围检测
- 没有jQuery的分页.如何选择具有相同类的元素范围?我的逻辑说得通吗?