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加载后完成对页面的编译。

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

      

  • 相关阅读:
    a链接获取方法
    调用百度地图API搜索地名和关键词
    页面定时跳转
    amazeui 上传文件
    数组删除多个元素的方法
    synology git 服务器问题处理
    公司和家里代码文件同步方案: (git和dropbox实现)
    前端项目, 每次运行都需要输入 sudo 的解决方法
    git revert 让提交不再害怕
    建立自己的键盘栈(shortcutkeyStack)
  • 原文地址:https://www.cnblogs.com/cutone/p/5725293.html
Copyright © 2011-2022 走看看