zoukankan      html  css  js  c++  java
  • 浅谈angularjs项目结构

    angularjs ,主要是js中的结构,让人困惑,其中包括app.js,controllers.js,directive.js,filter.js,services.js和一些自己添加的文件,例如appUtils.js.

    app中会将除自己添加的之外的js引入其中,此外还有一些使用的组件等,例如:

    angular.module('starter', ['ionic', 'starter.controllers', 'starter.services','starter.filter','directive','ngCordova','angular-timeline','ngFileUpload'])

    与app对应的是在各自js中,起的名字,例如:

    angular.module('starter.controllers', ['ionic','ngCordova'])

    与app并列的是自己添加的js文件,例如appUtils.js,

    在appUtils.js中声明的变量是整个项目的全局变量,例如:

    域名及端口号:var rootUrl="http://10.10.8.**:8087/****/";

    登录人的身份标识:var token = localStorage.getItem('token');   ( localStorage.getItem('token');是angularjs中的广播机制,以后再说)

    使用时就会方便很多,例如: return $http.get(rootUrl+'/answer/user/****.do?token='+token);

    services中可以缓存页面数据,所以很多缓存功能可以放在services中写,但是写在services中的全局变量token不会发生变化(更换登录者之后,token因缓存问题不会变化),有效的方法就是将token在二次闭包中赋值,或者干脆放在appUtils声明最好(appUtils会在用户再次登录时覆盖掉token)。

    directive文件会在页面加载时,仅加载一次。所以在新页面加载后会出现directive加载过早而早不到页面dom元素,这时可用$timeout()方法.

    directive加载一次导致的bug:

    1、当页面的入口有多个时(即底部多个导航页面都可进入到该页面),由于tab缓存,导致页面回退不完全时点击底部导航,路由不对

      解决方法,在appjs对应路由和有关页面跳转的地方删除tab。

    2、删除tab后导致directive不会重新编译页面,例如返回按钮和一些写在directive中的组件失效

      原因:页面dom加载,但是未被编译,方法不可用,tab的作用就是在dom加载后完成对页面的编译。

      解决方法:每个页面入口,对应一个页面,多个相同页面调用统一模板

      

  • 相关阅读:
    scp常用操作指令
    php 5.6.36 安装mcrypt
    记https在Android浏览器无法访问
    centos 7 源码包安装、卸载nginx
    Linux进程守护——Supervisor 使用记录
    Nginx日志切割工具——logrotate 使用记录
    计算机相关网段计算
    PHP链接sqlserver出现中文乱码
    Yii2 init 与 beforeAction 区别
    利用yii2分页插件,成对取出数组数据
  • 原文地址:https://www.cnblogs.com/cutone/p/5725293.html
Copyright © 2011-2022 走看看