在AngularJS中组合CREATE和EDIT控制器是否是最佳做法?
在CREATE和EDIT控制器中有很多重复的代码。
这些控制器可以组合成一个用于最小化重复代码。 问题:我需要区分哪个方法用于表单提交 – 例如create()或edit()。 解决方案:我可以添加$ scope.mode作为示例,并设置$ scope.mode =’edit’,如果用户点击’编辑’按钮或设置$ scope.mode =’添加’,如果用户点击“添加”按钮。 我可以使用服务来最小化重复的代码,但仍然会有重复的代码。例如在两个控制器中,我有cancel()方法,它清除表单并隐藏它。我可以在服务中存储clearForm()和hideForm(),但是这两个控制器中的代码将被复制: $scope.cancel = function() { Service.clearForm(); Service.hideForm(); }; 问题: >在AngularJS中组合CREATE和EDIT控制器是否是最佳做法?
是。使用1个控制器。
以下是使用1控制器的原因 控制器的工作是支持View。您的创建视图和编辑视图是完全相同的 – 只是一个数据预先填充(编辑),另一个不(创建)。 2控制器的重复问题 有两个不同的控制器和服务,您将至少产生以下重复: $scope.cancel = function() { Service.cancel(); }; $scope.validate = function() { ValidtionSvc.validate(); } . . .//other stuff similar 但是问题是为什么甚至像你这样重复。 (自上述以来就是第一个问题的答案) 如何使用1控制器重复?
问题重新定义:在CREATE和EDIT表单中是否有消除重复代码的良好做法? 根据我的知识,没有正式的“最佳实践”,以避免在这种具体情况下的重复代码。但是我建议不要使用mode = edit / create。在这种情况下,控制器的原因应该几乎没有区别,因为他们的工作是纯粹在用户交互时获取/更新模型。 以下是在这种情况下遇到的不同之处,以及如何/ then / else在mode = create / edit中如何避免: 1)使用现有值填充表单与创建的空表单。 要获取现有实体,您需要一些键/查询数据。如果这样的关键数据存在,你可以做 var masterEntity = {}; if(keyData) { masterEntity = MyEntityResourceFactory.getEntity(keyData); } $scope.entity = masterEntity;//for Create this would be {} 2)reset()形式 $scope.reset = function() { $scope.entity = masterEntity; } 3)更新/创建 $http.post()//should not be different in today's world since we are treating PUT as POST 4)验证 – 这是一个完美的重用 – 应该没有区别。 5)初始值/默认值 可以使用masterEntity = Defaults而不是{}。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |