【发布时间】:2016-06-23 21:34:34
【问题描述】:
我搜索了几个 Angular 样式指南和最佳实践链接,但找不到关于此问题的说明。 (注意,我没有使用 $scope。)如果我们有一个普通的网页,其中的元素调用控制器上的函数,我使用 WPF 的直觉是:
<button ng-click="myCtrl.save()">Save</button>
...
function myController(thingSavingService){
var ctrl = this;
// ...
ctrl.model.thing = {};
// ...
ctrl.saveThing() = function () {
thingSavingService.save(ctrl.model.thing);
}
}
有人建议也许拥有特定于元素的处理程序函数是一种很好的做法,例如:
<button ng-click="myCtrl.onSaveClicked()">Save</button>
...
function myController(thingSavingService){
var ctrl = this;
// ...
ctrl.model.thing = {};
// ...
ctrl.onSaveClicked = function () {
saveThing();
}
var saveThing = function () {
thingSavingService.save(ctrl.model.thing);
}
}
将这些东西直接绑定到控制器上的函数是一种好习惯,还是在两者之间有另一层更好,以便“动作处理程序”与域级函数分开?
换句话说,对于 Angular,我应该绑定到“域命令”函数(更少抽象)还是 GUI 动作处理函数(更多抽象)?
另外,是否有任何文章或最佳实践指南来探讨这些细微差别?
【问题讨论】:
-
只是出于好奇,
onSaveClicked除了打电话给saveThing之外还应该做其他事情吗?否则,这没有任何意义。无论如何它都没有用。这闻起来像类似 java 的代码。 -
Angular 是一个专注于 UI 的框架,它的设计确实倾向于特定于调用它们的元素的控制器功能,以及服务中的域功能(通常是 API 调用)。话虽如此,这个问题感觉很主观,可能永远不会真正得到一个在所有情况下都是正确的充分答案。
-
理论上,我想 onSaveClicked 是特定于被点击的保存按钮,并且可能有另一个函数从另一个控件调用 saveThing,例如,从自动保存计时器。
标签: angularjs model-view-controller