Forms Js中的内联编辑表单
我正在尝试制作一个小应用程序,其中包含从json源代码中提取的项目,我想要一个表单来编辑每个元素。每个元素都有几个属性:名称、id和描述 下面是一个示例,但编辑表单目前不起任何作用。稍后我将使用该示例将数据存储在数据库中 例如,我试图找出最好的解决方案,在按下“编辑”按钮时,将此编辑表单直接放在每个元素上。最好的方法是什么 提前谢谢 script.jsForms Js中的内联编辑表单,forms,angularjs,edit,Forms,Angularjs,Edit,我正在尝试制作一个小应用程序,其中包含从json源代码中提取的项目,我想要一个表单来编辑每个元素。每个元素都有几个属性:名称、id和描述 下面是一个示例,但编辑表单目前不起任何作用。稍后我将使用该示例将数据存储在数据库中 例如,我试图找出最好的解决方案,在按下“编辑”按钮时,将此编辑表单直接放在每个元素上。最好的方法是什么 提前谢谢 script.js var app = angular.module('myApp', []); function Controller($scope) { v
var app = angular.module('myApp', []);
function Controller($scope) {
var items = [
{
"id": "1",
"name": "John",
"price": "55.33",
"description": "Lorem ipsums aute irure doln v anim id est laborum.",
"flag": "0"
},
{
"id": "2",
"name": "Mike",
"price": "68",
"description": "Loriannaj jh said ihsa djni cjipsums aute irure doln v anim id est laborum.",
"flag": "0"
},
{
"id": "15",
"name": "George",
"price": "78",
"description": "This is the description",
"flag": "1"
}
];
//Initialize the controller and the UI
$scope.items = angular.fromJson(items);
}
html
<html ng-app="myApp">
<head>
<title>Test Page</title>
<link type="text/css" rel="stylesheet" href="style.css">
<!-- Angular Staff -->
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>
</head>
<body>
<header>
</header>
<section>
<div class="columns2" ng-controller="Controller">
<div style="width: 500px; display: inline-block">
<h3>ITEMS</h3>
<div ng-repeat="item in items">
<div class="user_div" >
<a href="#" ng-click="showDetails = ! showDetails">{{item.name}} </a>
<a style="float: right" href="#" ng-click="showEdit = ! showEdit">Edit </a>
</div>
<div class="user_data" ng-show="showDetails" >{{item.description}}</div>
<div class="user_data" ng-show="showEdit" >
<h3>Edit Item</h3>
<input value="{{item.name}}" type="text" >
<input value="{{item.description}}" type="text" >
<button ng-click="editItem({{item.id}},{{itemName}},{{itemDescription}})">Edit</button>
</div>
</div>
<br>
<pre>Items: {{items|json}}</pre> </div>
</div>
</body>
</html>
测试页
项目
{{item.description}
编辑项
编辑
app.factory('userFactory', function ($http) {
var factory = {};
factory.get = function () {
return $http.get('your_rest_url', {}).then(function (resp) {
console.log('Success', resp);
}, function (err) {
console.error('ERR', err);
});
};
});
inject it to your controller
var Ctrl = function ($scope, userFactory) {
$scope.items = userFactory.get();
};
项目:{{Items | json}}
您可以用于内联编辑。由于我们看不到任何示例,您可以使用此模块进行内联编辑 您可以创建这样的工厂
<input ng-model="items.property">
然后将数据绑定到表单元素
<tr ng-repeat="transaction in data.transactions">
...
<td>
<input ng-model="transaction.numAvailable"
ng-style="!transaction.edit && {'background-color': '#eeeeee'}"
ng-blur="saveShelf(transaction)"
ng-click="editShelf(transaction)"
class="form-control"
ng-value="transaction.numAvailable"/>
</td>
</tr>
我遇到了同样的需求,并提出了以下解决方案:
$scope.editShelf = function(trans){
trans.edit = true;
};
$scope.saveShelf = function(trans){
trans.edit = false;
//call service to save value
};
基本上,您有一个使用bg颜色看起来被禁用的输入:#eee,onclick删除bg颜色,onblur重置bg颜色。为了实现这一点,我在列表中添加了一个“edit=false”,其中包含:
示例在哪里?
这里是示例
在哪里?很抱歉错过了。下面是示例代码我的问题是如何实现内联编辑表单。我需要指令吗?我明白了,然后抽象出你想对每个表单元素重复的部分,然后用它创建一个指令。或者您可以有一个内联编辑指令,只需在需要的地方插入即可。
_.forEach($scope.data.transactions, function(trans){
trans.edit = false;
});