新增和编辑的表单域都差不多 除了一个是 新增 一个是更新按钮
可以。
再问个问题,我在列表的控制器ListrCtrl中已经取到数据列表了 现在要修改某个数据项 ,通过路由可以把id传过来 ,在编辑的控制器EditCtrl里再通过后台接口传id 查出数据,然后给scope赋值, 修改完以后save ,有没有办法 从列表控制器ListrCtrl 直接把 数据项 传到编辑的控制器EditCtrl里面,不用从后台查一次 ?
@yakczh不可以,$modal可以
myApp.controller('ListCtrl', function($scope,$http) {
$scope.phones=[];
$http.get('content.json').success(function(data) {
$scope.phones=data;
$scope.$root.$broadcast("someEvent", $scope.phones);
});
});
myApp.controller('EditCtrl', function($scope) {
$scope.$on("someEvent", function (event, someDate) {
console.log(someDate);
$scope.phones=someDate;
})
console.log($scope.phones);
});
myApp.config(['$routeProvider',function ($routeProvider) {
$routeProvider
.when('/list', {
templateUrl: 'views/phones/list.html',
controller: 'ListCtrl'
})
.when('/phones/:id', {
templateUrl: 'views/phones/edit.html',
controller:'EditCtrl'})
这个broadcast 也不管用
我觉得是可以的,比如通过本地缓存( sessionStorage,localStorage)或者 window 传递数据。我这么干过,至于这样有什么弊端,还请路过的高人分析一下
当然可以啦,比如你控制器里有个方法叫ng-click = “update($index)”.只要传入$index即可,当前的$index代表的是选中项的index。后续的怎么 更新模型视图,这个你应该比较容易吧
@fiftyk 额,这种方式是快,但是有点破坏作用域的味道,所以呢。公用一个模板,用ng-if控制需要隐藏和显示的部分。$index传递当前item index
可以,首先要确保你的View确实可以复用,然后保存的逻辑分开处理就好了。我是根据model的id来判断的
<form role="form" ng-submit="vm.model.id ? vm.update() : vm.save()"></form>
楼上这些都搞得复杂了,$http是有cache参数配置的,设置为true即可,这样即使请求多次也没关系了,注意的是有时候你需要清理cache来强制刷新数据。