【问题标题】:Automatically checking radio button and executing ng-change自动检查单选按钮并执行 ng-change
【发布时间】:2016-02-03 17:02:13
【问题描述】:

我正在开发一个 Angular 应用程序,并且我正在使用单选按钮在两个数据集之间进行交换。

它按预期工作,除了我希望在页面加载时检查其中一个单选按钮,并且我希望它的 ng-change 参数也可以在页面加载时执行。

我目前的做法是:

<div ng-init="value='valOne'; myFunc(value)">
  <label class="radio-inline">
    <input type="radio" name="site" value="valOne" ng-model="value" ng-change="myFunc(value)">Val One</input>
  </label>
  <label class="radio-inline">
    <input type="radio" name="site" value="valTwo" ng-model="value" ng-change="myFunc(value)">Val Two</input>
  </label>
</div>

这会正确加载我的页面并选中第一个单选按钮,但我对如何在页面加载时执行 myFunc() 感到困惑。我也尝试在声明后在控制器中简单地调用 myFunc() ,但这对我不起作用。

【问题讨论】:

  • 你能分享控制器代码吗?
  • 您的代码应该可以正常工作,您提供的代码段似乎没有问题。您能否回答以下问题。当您手动选择不同的单选按钮时,您的函数是否被调用?它是否在浏览器控制台和您使用的浏览器上显示任何错误?
  • 是的,当我手动更改单选按钮时,该函数会按预期调用。控制台中没有错误,我正在使用 Chrome。

标签: javascript html angularjs angularjs-directive


【解决方案1】:

您可以在控制器中执行以下操作:

$scope.value = 'valOne';
$scope.myFunc($scope.value);

这应该因为ng-model而选择正确的单选按钮并执行该功能。

【讨论】:

  • 这是我正在寻找的解决方案类型,但不幸的是它对我不起作用!
  • 您能解释一下为什么它不起作用吗?也许给我们一个小家伙看看
  • 我希望我知道为什么!我的猜测是这与在声明之前调用的函数有关。我的控制器目前相当大,所以我会尝试让我的应用程序更简洁的版本来显示。
【解决方案2】:

我会使用 $timeout 来触发我的函数,如下所示:

function Controller($scope, $timeout){
    ...
    $timeout(function(){
         $scope.myFunc(value);
    },1000);
}

【讨论】:

    猜你喜欢
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2010-09-26
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多