【问题标题】:Angular JS Bind radio buttons to variable to use as a flipAngular JS将单选按钮绑定到变量以用作翻转
【发布时间】:2016-12-16 02:09:52
【问题描述】:

我想要做的是使用用户选择的单选按钮值来更新控制器中的变量。该变量取决于值将对特定答案进行 http 调用。

示例:

选择汽车 -> 变量 temp = 卡片 -> http 调用汽车方法

选择房子 -> 变量 temp = 房子 -> http 调用房子方法

在视图中我有这样的东西:

<input id ="inputOne" type="radio" ng-value="cars" ng-model="controller.selection">
<input id ="inputTwo" type="radio" ng-value="house" ng-model="controller.selection">

<input id="mySubmit" type="button" ng-click="controller.selectionChosen">

在我的控制器中我有这样的东西:

var vm=this;
vm.selection;

function selectionChosen(){
  alert(vm.selection);

  // If selection == cars do this
  // If selection == house do this
}

您可能想知道为什么它是 'controllerName.variableName',我正在遵循最佳实践 (found here) `所以它的设置方式需要控制器名称,然后是变量。

我遇到的问题是由于某种原因该值没有约束力。当警报发生时,它会提示“未定义”,我不知道为什么。我在网上查看了许多教程和示例,这看起来应该可以工作。

更新

所以我很确定它具有约束力,或者至少正在尝试。当我将变量初始化为“测试”时,第一个警报显示“测试”。单击按钮后,它将转到“未定义”。

【问题讨论】:

  • 要进行故障排除,我建议验证您的视图中的控制器实际上是否按照您的预期引用了您的控制器。
  • 是的,我在视图中使用了其他变量并且它们工作正常。

标签: html angularjs model-view-controller angularjs-directive


【解决方案1】:

问题来自ng-value="cars"

由于您使用 Mycontroler 作为控制器,如果您在控制器中声明汽车,则它应该是 ng-value='controller.cars'

如果你只是想在ng-value中使用cars作为字符串而不声明它,你需要添加' ',angular会像字符串而不是变量一样理解它 ng-value="'cars'"

【讨论】:

  • 我正在尝试您的解决方案,您能否展示一下控制器的外观,以便我知道我正确地遵循了您的逻辑?
  • 我使用了 ng-repeat(用于复选框)并且没有使用 vm,但它对我有用 jsfiddle.net/15u9zpmu/2
  • 也许你的 ng 值是错误的,因为你使用控制器应该是 &lt;input id ="inputTwo" type="radio" ng-value="controller.house" ng-model="controller.selection"&gt; 或字符串 &lt;input id ="inputTwo" type="radio" ng-value="'house'" ng-model="controller.selection"&gt;
  • 也试过了
  • Got it too Work :),我使用了你的字符串实现之一,这正是我想要的!您可以通过解释逻辑的描述将其添加到您的问题中吗?然后我会接受并投票。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 2018-09-03
  • 2023-03-22
  • 2011-10-06
  • 2013-06-29
  • 2021-07-19
  • 2018-06-14
相关资源
最近更新 更多