10 逻辑完善以及bug修复

进行到这里,我们应用开发已经接近尾声,我这里基本就是应用开发的记录过程,讲解的东西很少,有问题可以在评论区讨论呦。下面进入最后调整的阶段。

预览我们的应用,会发现首页的职位列表,也会显示收藏的星星图标,这里我们不需要它:

我们先来进行调整职位列表的组件模块:

positionlist.html:

<span ng-click="$event.stopPropagation();select(item)" ng-if="isFavorite" class="p-a icon {{item.select?‘star-active‘:‘star‘}}"></span>

这里把是否显示小星星的条件由是否登录改成由其父控制器来控制,打开positionlist.js文件:

‘use strict‘;
angular.module(‘app‘).directive(‘appPositionList‘,[‘$http‘, function($http){
    return {
        restrict:‘A‘,
        replace:true,
        templateUrl:‘view/template/positionlist.html‘,
        scope:{
            data:‘=‘,
            filterObj:‘=‘,
            isFavorite:‘=‘
        },
        link:function($scope){
            $scope.select = function(item){
                $http.post(‘data/favorite.json‘,{
                    id:item.id,
                    select: !item.select
                }).success(function(resp){
                    item.select = !item.select;
                });
            };
        }
    };
}]);

这时,首页的职位列表的收藏图标已经消失了,但是我的收藏的小星星也不见了,而我们在收藏列表里是需要它的:

打开favorite.html文件:

<div app-position-list data="list" is-favorite="true"></div>

现在我们的收藏图标就出现了:

还有首页的头部有一个去登录的按钮和定位的提示语,这是不合逻辑的,当我们是登录状态的时候,应显示用户名称,而在非登录状态显示这两部分,打开head组件部分,head.html:

<div class="head">
    <span class="text" ng-hide="name">10秒定制职位</span>
    <button class="custom f-r" ng-hide="name" ui-sref="login">去登录</button>
    <span class="f-r text" ng-bind="‘您好,‘+name"></span>
</div>

修改对应的head.js文件:

‘use strict‘;
angular.module(‘app‘).directive(‘appHead‘,[‘cache‘, function(cache){
    return{
        restrict:‘A‘,
        replace:true,
        templateUrl:‘view/template/head.html‘,
        link:function($scope){
            $scope.name = cache.get(‘name‘) || ‘‘;
        }
    }
}]);

修改后的效果:

现在进入职位详情页看一下:

我们现在是登录状态,底部显示去登录这不科学,打开positionCtrl.js文件:

‘use strict‘;
angular.module(‘app‘)
    .controller(‘positionCtrl‘, [‘$q‘, ‘$http‘, ‘$state‘, ‘$scope‘,‘cache‘, function($q, $http, $state, $scope, cache) {
        $scope.isLogin = !!cache.get(‘name‘);

此时页面效果如下:

我们想要的页面效果是出来了,但是收藏图标现在还不好使,来处理一下小星星,打开positioninfo.html,给小星星添加一个点击事件:

<img ng-show="isLogin" ng-src="{{imagePath}}" class="p-a" ng-click="favorite();">

然后打开它对应的指令文件positioninfo.js文件:

‘use stict‘;
angular.module(‘app‘).directive(‘appPositionInfo‘, [‘$http‘, function($http) {
    return {
        restrict: ‘A‘,
        replace: true,
        templateUrl: ‘view/template/positioninfo.html‘,
        scope: {
            isActive: ‘=‘,
            isLogin: ‘=‘,
            pos: ‘=‘
        },
        link: function($scope) {
            $scope.$watch(‘pos‘, function(newValue) {
                if(newValue){
                    $scope.pos.select = $scope.pos.select || false;
                    $scope.imagePath = $scope.pos.select ? ‘image/star-active.png‘ : ‘image/star.png‘;
                }
            });
            $scope.favorite = function() {
                $http.post(‘data/favorite.json‘, {
                    id: $scope.pos.id,
                    select: !$scope.pos.select
                }).success(function(resp){
                    $scope.pos.select = !$scope.pos.select;
                    $scope.imagePath = $scope.pos.select ? ‘image/star-active.png‘ : ‘image/star.png‘;
                });
            };
        }
    }
}]);

现在我们来完成「投个简历」部分的操作:

打开position.html文件,给底部按钮添加一个点击事件:

<button class="bottom-btn c-w" ng-bind="message" ng-click="go();"></button>

然后打开positionCtrl.js文件来完善逻辑:

‘use strict‘;
angular.module(‘app‘)
    .controller(‘positionCtrl‘, [‘$log‘, ‘$q‘, ‘$http‘, ‘$state‘, ‘$scope‘, ‘cache‘, function($log, $q, $http, $state, $scope, cache) {
        $scope.isLogin = !!cache.get(‘name‘);
        $scope.message = $scope.isLogin ? ‘投个简历‘ : ‘去登录‘;

        function getPosition() {
            var def = $q.defer();
            $http.get(‘/data/position.json?id=‘ + $state.params.id).success(function(resp) {
                $scope.position = resp;
                if (resp.posted) {
                    $scope.message = ‘已投递‘;
                }
                def.resolve(resp);
            }).error(function(err) {
                def.reject(err);
            });
            return def.promise;
        };

        function getCompany(id) {
            $http.get(‘/data/company.json?id=‘ + id).success(function(resp) {
                $scope.company = resp;
            })
        }
        getPosition().then(function(obj) {
            getCompany(obj.companyId);
        });
        $scope.go = function() {
            if ($scope.message != ‘已投递‘) {
                if ($scope.isLogin) {
                    $http.post(‘data/handle.json‘, {
                        id: $scope.position.id
                    }).success(function(resp) {
                        $log.info(resp);
                        $scope.message = ‘已投递‘;
                    })
                } else {
                    state.go(‘login‘);
                }

            }

        };
    }]);

现在,应用已经修改完毕啦,我们来快速预览一下吧~

时间: 2025-01-03 16:34:55

10 逻辑完善以及bug修复的相关文章

MDT 2013 Update 1 Preview 部署 Windows 10之MDT部署BUG修复

本章主要内容是修复MDT 2013Update 1 preview 相关配置Bug,从而为部署windows 10提供配置支持,可能相对于之前自动化设置较为复杂,建议大家在修改过程中做好原目录下数据的备份,以防止配置错误后可实时恢复.有关本文中所涉及到的替换配置文件请参照附件中内容.接下来我们开始进入正题: 1.打开存放MDT 2013Update 1 Bug修复文件夹: 2.复制Client.xml和StateRestore.xml两文件,并覆盖MDT安装目录C:\Program Files\

Python Web 应用程序框架 Django 1.10.1 发布,bug修复

Django 1.10.1 发布了,Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架(腾云科技TY300.COM).使用 Django,我们在几分钟之内就可以创建高品质.易维护.数据库驱动的应用程序(勤快学QKXue.NET). 该版本主要是修复1.10中的bug.更多详细信息,可参看完整发布说明. Bug修复: Fixed a crash in MySQL connections where SELECT @@SQL_AUTO_IS

OJ2.0userInfo页面Modify逻辑bug修复,search功能逻辑实现

这周的主要任务:userInfo页面Modify逻辑bug修复,search功能逻辑实现. (一)Modify逻辑bug修复: 这里存在的bug就是在我们不重置密码的时候按照前面的逻辑是不能提交修改,这个逻辑是错误的,应该改为可以不修改密码也能提交,主要是if逻辑判断的修改 先看一下代码: def userInfo(request, user_id): try: user = User.objects.get(userID = request.session['userID']) except:

豆瓣app严重bug修复 给一个普通程序员带来的启发!

整个事情让人觉得不可思议! 之前写过一个帖子<牛逼哄哄的豆瓣公司的程序员!佩服!>地址 http://blog.csdn.net/default7/article/details/38597687,里面提到了豆瓣FM ios版本的一个严重级别的bug,锁屏就无法播放!豆瓣fm 肯定是锁屏可以播放的,但是8月12日更新的app会导致锁屏无法播放. 这个问题一直到8月21日才修复更新!(我相信之间有无数的人在反馈这个bug,看我在CSDN博客上的另外那一篇帖子里面的截图就知道!) 豆瓣FM修复严重

批量打回未报bug修复

半天写完了代码,从此开始了三天的bug修复... 问题背景:从合同系统那边获取数据. 1.开发完后,利用mock模拟合同数据,获取(mock中的合同)数据成功,但是在解析合同数据时出错,原因,mock中的数据是济南的,测试用的单子是烟台的,合同字段不匹配,导致出错. 2.mock中的合同数据可以获取,但是房屋的数据却无法获取,期间考虑用的参数可能不同,于是先后试了houseId,houseCode都不行.最后,进入mock代码,查看其逻辑,发现获取房屋数据的方法上的注解类型用错, 不会加上hou

[bug修复方案分享]阿拉伯文导致TextView显示顺序左右颠倒

bug现象: 在“?(·ω·) ?”这个表情后通过StringBuilder拼接的文字会显示在表情内部,例如拼接“2015”后TextView控件中显示为“?(·ω·) ?2015” bug原因排查: Step1:怀疑是工程师调用append方法错误,但通过debug调试查看String的char[]值正常 Step2:怀疑是“ ?”这个特殊字符引起的问题,删除后显示正常 Step3:百度搜索“ ?”字符,发现是阿拉伯语文字,结合阿拉伯语从右至左的阅读.书写顺序,确认bug原因 bug修复方法:

NHibernate 的 SetResultTransformer 方法在Oracle下的Bug修复

NHibernate 的 SetResultTransformer 方法在Oracle下会出现"Could not find a setter for property"错误,这是Nhibernate在Oracle下使用的一个Bug.针对此Bug我可以自己进行修复. 下载NHibernate源码,将Property下的"ChainedPropertyAccessor.cs"稍作修改就会修复此Bug,代码如下: using System; namespace NHib

android-misc-widgets四向(上下左右)抽屉bug修复版--转载

 android-misc-widgets四向(上下左右)抽屉bug修复版 2013-08-04 08:58:13 标签:bug down top panel slidingdrawer 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mikewang.blog.51cto.com/3826268/1263802 一,与开源项目相比,改进如下: 1,修复了闪屏的问题 二,与开源项目相比,增加的限制: 1,不能设置相应动画的In

duilib BUG修复 --- 按一次ESC键, 关闭多个窗口

BUG造成的影响 继承自WindowImplBase的窗口类, 如果没有重写重写ResponseDefaultKeyEvent而由WindowImplBase默认处理的话, 会导致按一次有ESC键, 导致多个窗口全部关闭. 产生原因 第1张图: ESC按键属于PreMessage, 所以会经由这里的PreMessageHandlers处理, 如果 MessageHandler 处理了该消息, 那么她就应该置 bHandled 为 true, 以防止 ESC 消息继续往下传导致多个窗口关闭. 第2