我应该如何处理为更复杂的ng-model特征编写代码的逻辑?

时间:2017-06-07 06:00:41

标签: javascript angularjs logic

首先,让我解释一下我正在寻找的效果:

布局:

  • 页面顶部标题为"选择..."。
  • 下面有两个输入框,input1和input2

效果

  • 如果用户在input1中的[choice1]中首先输入,则标题会自动更新并显示"在[选项1]和...之间选择"
  • 如果用户在input2中的[choice2]中首先输入,则标题会自动更新并显示"选择___和[choice2]"
  • 如果用户已经在一个输入中写入并开始在另一个输入中写入,则标题会自动更新并显示"在[choice1]和[choice2]"之间选择。

现在,我已经编写了angular-js代码来实现这一目标。我不是在寻找如何来实现效果的答案。相反,我想知道逻辑最佳方式来实现这种效果,因为我认为我的方式可以改进。

最后,这是我使用的逻辑:

  1. 使用4 ng-switch-when属性创建4个div。每个div都包含一个标题。第一个div包含标题为"选择..."写在上面。第二个div包含标题为"选择[input1text]和..."写在上面。第三个div包含带&#34的标题;选择___和[input2text]"写在上面。最后的div有"在[input1text]和[input2text]"之间进行选择。写在上面。每个div都有一个ng-switch-when属性,它们是:" not-pressed"," first-pressed"," second-pressed",&# 34;分别按下"和
  2. 如果有人开始输入input1,我会看到第二次按下状态或两次按下状态当前是否处于活动状态。如果是,我将状态设置为双击。否则,我将状态设置为first-pressed。
  3. 如果有人开始输入input2,我会看到第一次按下状态还是双按状态当前是否处于活动状态。如果是,我将状态设置为双击。否则,我将状态设置为二次按下。
  4. 我认为我编写它的方式非常笨拙和混乱,我想对是否有更好的方法来评估此功能的逻辑。再一次,我不寻找代码。我只是想看看是否有更好的逻辑。

2 个答案:

答案 0 :(得分:0)

我会为每个输入分配ng-model。然后每个标题有三个div,每个标题引用所需的ng-model(choice1,choice 2和both)。然后我会在三个div中的每一个上使用ng-if来测试ng-model是否为任何一个选择都是空的。

答案 1 :(得分:0)

  • 我在ng-switch-when区块中只有2个'div'。
  • choice1choice2ng-model
  • 的一部分
  • ng-switch on检查choice1choice2是否为空字符串。这意味着:choice1不为空,或choice2不为空,或choice1choice2不为空
  • ng-switch-when = true然后呈现。请注意,至少输入了一个选项。

    <div> 
      <h2> Choose between {{choice1 === "" ? "____" : choice1}} and {{choice2 === "" ? "..." : choice2}} </h2> 
    </div>
    
  • ng-switch-default会将标头呈现为Choose between ...

编辑: 实际上,我认为最好让div作为ng-switch之外的包装器,然后只渲染内部元素。似乎无论输入的值如何,您都将始终显示标题。