【问题标题】:Dynamically added radio inputs does not trigger ng-show动态添加的无线电输入不会触发 ng-show
【发布时间】:2015-06-19 20:31:44
【问题描述】:

好的,伙计们,这是我的问题:

我必须制作类别列表,在选择时仅显示该类别的元素(并隐藏其余部分)。我决定使用单选按钮/每个类别都有自己的单选按钮。

添加类别的代码如下:

APP.js

controller('FamiliesCtrl', function($scope) {
    $scope.families = ['All', 'Stark', 'Lannister'....];
    $scope.selfamily = {selfam: 'All'};
}).

HTML

<form ng-controller="FamiliesCtrl"> 
    <input type="radio" ng-model="selfamily.selfam" ng-repeat="family in families" ng-value="family" name="selfam">    
</form>

我正在尝试在具有下一个代码的 html 中触发 ng-show:

<div id="characters" class="row col-xs-9" ng-controller="CharacteresCtrl">
        <div class="character col-xs-3" ng-repeat="character in characters | orderBy:sortParameter | limitTo: 120" char-image="{{character.picture}}" ng-show="selfamily.selfam === '{{character.house}}' || selfamily.selfam === 'All'">
               <h1>{{character.name}}</h1>
        </div>          
</div>  

好的,现在。如果我以这种格式手动插入类别,这不起作用:

<input class="checkboxHidden" id="first" type="radio" name="selfam" ng-model="selfamily.selfam" value="All">
    ... and so on...

它确实有效。您的帮助将不胜感激。如果我需要提供更多代码,请告诉我。

总结一下,以动态/编程方式添加的类别在 ng-show 上没有任何功能,而手动添加的效果很好......

【问题讨论】:

    标签: angularjs angularjs-ng-repeat ng-show


    【解决方案1】:

    您不需要插值来访问 character.house 的值。这应该有效:

    ng-show="selfamily.selfam === character.house || selfamily.selfam === 'All'"
    

    ...

    仔细查看您的代码,您的单选按钮设置的值存在于与字符列表不同的控制器中。您必须对所有值使用单个控制器,或者使用服务在控制器之间共享值。

    【讨论】:

    • 感谢您的回答,但这不能解决我的问题。我已经改变了,一切都是一样的..问题一定是在动态添加的单选按钮中,但我不知道在哪里,它们被正确创建 - 每个单选按钮都有正确的值,但他们不想触发 ng -显示值(家庭)=== character.house
    • 两个控制器是问题所在。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多