2017-02-16 88 views
0

在我的表单中,我使用了两个单选按钮,并希望检查选定的值。但这并不如预期的那样。我想确定各个无线电选择值,并在结果列中显示大/小ng-change事件只在ng-repeat中触发一次

<div ng-controller="CityCtrl"> 
    <table> 
    <tr> 
     <th>Name</th> 
     <th>Big</th> 
     <th>Small</th> 
     <th>Result</th> 
    </tr> 
    <tr ng-repeat="city in cities"> 
     <td>{{ city.name }}</td> 
     <td> 
     <input type="radio" name="{{city.name}}-{{$index}}" ng-model="big" value="big_value" ng-change="check(city.name, big)"> 
     </td> 
     <td> 
     <input type="radio" name="{{city.name}}-{{$index}}" ng-model="small" value="small_value" ng-change="check(city.name, small)"> 
     </td> 
     <td>***</td> 
    </tr> 
    </table> 
</div> 

控制器:

var myApp = angular.module('cityApp', []); 

function CityCtrl($scope) { 
    $scope.big = ''; 
    $scope.small = ''; 
    $scope.cities = [{ 
    id: 1, 
    name: 'Tokyo' 
    }, { 
    id: 2, 
    name: 'Guangzhou' 
    }, { 
    id: 3, 
    name: 'Seoul' 
    }]; 

    $scope.check = function(city, value) { 
    console.log("City->" + city + " ::: Value->" + value); 
    }; 
} 

从我做了推断的几件事情其他答案:

  1. 了解JS中的原型继承?
  2. NG-重复产生影响无线电

我没玩过周围NG-重复

  • 使用$父里面这些无线电对NG模态子范围,但不能做这样的工作,我猜测我在这里犯了一些明显的错误。

    这里是小提琴: http://jsfiddle.net/mw2us37h/

    注:我没有使用NG-价值,但通过硬编码的值 。 更改为NG-点击不工作或者

  • +1

    [ng-change事件只能在使用ng-repeat创建时为每个单选按钮触发一次]的可能重复(http://stackoverflow.com/questions/23790239/ng-change-event-only-fires-once- for-each-radio-button-when-created-with-ng-repea) – OstrichProjects

    +0

    你是否想要选择多个城市?或一个城市? –

    回答

    0

    我不知道我理解你想要什么。我想你喜欢在结果栏中显示单选按钮的值和/或在点击值的位置有一个函数。

    显示在结果栏中的单选按钮值
    我会因此结合一些具体的事情城市改变ngModel值。所以改变:

    <input type="radio" name="{{city.name}}-{{$index}}" ng-model="big" value="big_value"> 
    

    到:

    <input type="radio" name="{{city.name}}-{{$index}}" ng-model="city.size" value="big_value"> 
    

    <input type="radio" name="{{city.name}}-{{$index}}" ng-model="small" value="small_value"> 
    

    <input type="radio" name="{{city.name}}-{{$index}}" ng-model="city.size" value="small_value"> 
    

    因此模型指向同一个变量city.size,这是那里的选择价值将是萨夫编辑。然后在结果列更改***city.size 见变化小提琴:在ngClick

    使用ngChange http://jsfiddle.net/u2kxuyr7/

    获得价值为你做媒体链接,我会做的简单有点不同。变化:

    ng-change="check(city.name, whatEverValue)" 
    

    到: NG-变化= “检查(市)”

    和校验功能将类似于:

    $scope.check = function(city) { 
        console.log("City->" + city.name + " ::: Value->" + city.size); 
        }; 
    

    见琴:http://jsfiddle.net/Lmszxj8s/
    然后ngChange是每次更改都被解雇。

    +0

    另外,如何从所有选定的收音机中检索城市地图:大小if我想收集一个提交按钮来处理后端? – FakirTrappedInCode

    +0

    这里看看这个小提琴http://jsfiddle.net/8dct8ptz/。制作一个提交按钮,记录不同类型的发布数据。最后一个是最相似的地图。 city.id => city.size –

    1

    检举这个重复的,但它似乎是解决的办法是在angularjs与单选按钮的工作时使用ng-click而不是ng-change

    这是你的小提琴编辑的作品:http://jsfiddle.net/mw2us37h/1/

    +0

    现在我们不得不使用ng-change作为ng-click导致用户界面出现问题,因为点击最近的标签会触发点击事件... – FakirTrappedInCode