【问题标题】:Update specific object on ng-class更新 ng-class 上的特定对象
【发布时间】:2015-07-13 06:20:05
【问题描述】:

我有兴趣更新 ng-class 上的特定对象,因为我的视图包含许多对象,我想从循环中对特定对象应用更新。

 <div>
            <div class="baseMap">
                <i ng-repeat="society in societyImage"
                   class="icon box"
                   ng-class="{ 'bigger': society.bigger }"
                   ng-style="{'background-image': 'url(' + society.imageUrl + '.png)', 'top':+ society.top, 'left':+ society.left}"
                        ng-click="showAlert($index)"></i>

            </div>

        </div>

/// 按钮点击索引 animateMapItem($index);

我的 JS 函数

var self = $scope;

    self.bigger = false;
    self.lightTheme = false;

    $scope.animateMapItem = function (index) {

        //self.bigger = !self.bigger;

        var listTitle = $scope.listItem[index].indicatorEn;

        var _societyObj = [];
        _societyObj = _.where($scope.societyImage, {'indicationEn':listTitle});

        $log.log(_societyObj);

        _societyObj.bigger = true;

    };

我的 CSS

.baseMap .icon {
        position: absolute;
        background-size: 100% 100%;
        width: 40px;
        height: 40px;
        display: block;

    }

.box {
        -webkit-transition:all linear 0.5s;
        transition:all linear 0.5s;
    }

    .box.bigger {
        width: 60px;
        height: 60px;
    }

现在它正在将所有项目更新为更大,我想在按钮单击时更新特定项目

【问题讨论】:

    标签: javascript angularjs css jquery-mobile ionic-popup


    【解决方案1】:

    _societyObj 是一个本地对象,您不能在 html 中的视图部分使用它。将其设为 范围对象 然后只有您可以将其用作 html 视图部分。将视图部分中使用的所有本地对象更改为 $scope 对象。否则您的代码无法按您的预期工作

    但是 $scope.animateMapItem 函数总是返回 true 为什么???它没有任何意义

    $scope 只能在控制器和视图部分之间进行通信 它的双向绑定

    $scope.societyObj = [];
    $scope.societyObj.bigger = true;
    

    否则返回应该在函数末尾的_societyObj

    $scope.animateMapItem = function (index) {
    
            //self.bigger = !self.bigger;
    
            var listTitle = $scope.listItem[index].indicatorEn;
    
            var _societyObj = [];
            _societyObj = _.where($scope.societyImage, {'indicationEn':listTitle});
    
            $log.log(_societyObj);
    
            _societyObj.bigger = true;
    
            return _societyObj.bigger; // it always return true it doesn't make any sense
    
        };
    

    在你的 html 中

    <div class="baseMap">
                    <i ng-repeat="society in societyImage"
                       class="icon box"
                       ng-class="{ 'bigger': animateMapItem($index) }"
                       ng-style="{'background-image': 'url(' + society.imageUrl + '.png)', 'top':+ society.top, 'left':+ society.left}"
                            ng-click="showAlert($index)"></i>
    
                </div>
    

    【讨论】:

    • 我已经从 _societyObj = _.findWhere($scope.societyImage, {'indicationEn':listTitle});来自下划线框架,返回相同的对象,但您的建议也很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2014-07-03
    • 2017-12-26
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    相关资源
    最近更新 更多