Javascript AngularJS逻辑应该放在HTML文件中吗?
我想重构代码,我在下面举了一些例子。我对AngularJS很陌生。现在当我看到代码时,我对HTML代码中的所有逻辑都很好奇Javascript AngularJS逻辑应该放在HTML文件中吗?,javascript,html,angularjs,separation-of-concerns,Javascript,Html,Angularjs,Separation Of Concerns,我想重构代码,我在下面举了一些例子。我对AngularJS很陌生。现在当我看到代码时,我对HTML代码中的所有逻辑都很好奇 <p ng-show="countForm.count.$dirty && countForm.count.$error.min" class="error-message"> <button ng-click="step(2)" ng-show="data.step == 1 && countForm.count.$di
<p ng-show="countForm.count.$dirty && countForm.count.$error.min" class="error-message">
<button ng-click="step(2)" ng-show="data.step == 1 && countForm.count.$dirty" ng-disabled="countForm.$invalid" class="line-break">
<div ng-class="{selected: data.spreadChoice == 3}" ng-click="data.spreadChoice = 3; step(3)" ng-mouseover="data.preSpreadChoice = 3" ng-mouseout="data.preSpreadChoice = data.spreadChoice">
<div ng-show="data.step >= 2" class="step" ng-class="{active: data.step == 3, done: data.step > 3, left: data.preSpreadChoice == 1, right: data.preSpreadChoice == 3}" ng-scroll-here="data.step == 3">
<p ng-switch-when="false" class="large">[[data.emails.length]] von [[data.count]] – <span class="red">[[Math.max(0,data.count-data.emails.length)]]</span> Members</p>
<div ng-show="data.step >= 5 && data.multipleTeams" class="step" ng-class="{done: data.step > 5, active: data.step == 5}" ng-scroll-here="data.step == 5">
<button class="small" ng-disabled="!unitsForm.$dirty || unitsForm.$invalid" ng-click="addUnit(data.nextTeam, data.nextTeamleaderEmail)">
[[data.emails.length]]von[[data.count]]–[[Math.max(0,data.count data.emails.length)]成员
HTML不应该包含类或属性,而逻辑本身应该放在JS文件或JS代码中吗?这是开发AngularJS的一种好方法(或者至少是一种常见的方法)吗?还是应该避免在HTML中放置逻辑?使用角度指令在HTML中放置逻辑是一种好方法。如果不在HTML中放置逻辑,就无法充分利用angular 控制器应该包含视图逻辑,但不应该实际引用DOM(只应该通过指令来引用DOM) AngularJS需要记住的两件事或最佳实践是
- 在视图中将作用域视为只读
- 在控制器中将作用域视为仅写
<div id="datepicker"></div>
你可以这样做,如下所示
这样,即使设计师或阅读HTML的人能够读取内容,甚至可以从元素属性本身传递选项
<div date-picker start="today" end="tomorrow" show-time="true"></div>
AngularJS的重要性本身就是声明性语法,可以像您发布的那样包含表达式作为属性值。这完全不是一个坏习惯。事实上,这是所有开发人员都做的常见且良好的实践。在angularjs中使用HTML中的逻辑可以节省我们自己编写的大量代码。所有的举重动作都是在幕后完成的
如果你问我:
如果我们谈论的是
ng If
/ng show
条件,那么只有当它们很小且“可读”时,我才会将它们添加到视图中。当问题不止这些时,我会将它们移到控制器上进行调试,因为我相信HTML应该是可读的。因为功能在那里,所以它显然是要被使用的。在实践中,您可能希望避免将过于复杂的逻辑放入属性中,但无法完全避免将逻辑放入属性中。如果你尝试的话,你的控制器会变得非常混乱。这是有角度的。疯狂的东西。
<div date-picker start="today" end="tomorrow" show-time="true"></div>