小编sta*_*g91的帖子

从服务器加载html和Controller并创建动态UI - 路由器

我正在寻找一个从服务器动态加载我的应用程序内容的解决方案.

我的场景:

让我们说我们有2个用户(A和B),我的应用程序包含不同的模块,比如说一个shoppingList和一个计算器,现在我的目标是用户从数据库登录我的应用程序我获得用户权限并取决于什么权利他有,我会从服务器加载视图的html和逻辑部分的控制器文件,同时这样做我将创建html和ctrl所需的状态.因此,基本上我的应用程序与Login的一致性非常小,其他所有内容都取决于Userrights从服务器中提取.

我用的是什么:

  1. 科尔多瓦
  2. AngularJs
  3. 离子框架

为什么我需要它全部动态:

1)拥有一个仅包含登录逻辑的应用程序的可能性,因此在修复错误或添加模块时,我只需要将文件添加到服务器,即可为用户提供权利,而无需更新应用程序.

2)用户只有他需要的功能,当他只有1个模块的权利时,他不需要拥有一切.

3)应用程序的增长在此刻非常大的,这意味着每个模块有一个像5-10状态,用自己的HTML和控制器.目前有50个不同的模块计划,所以你可以做数学.

我看了这个以获得一些灵感:

AngularJS,ocLazyLoad和加载动态状态

到目前为止我尝试了什么:

我创建了1个包含整个模块的Html文件,因此我只有1个http请求:

让我们说这是用户登录后来自服务器的响应

HTML部分:

var rights= [A,B,C,D]

angular.forEach(rights, function (value, key) {
     $http.get('http://myServer.com/templates/' + value + '.html').then(function (response) {
        //HTML file for the whole module
        splits = response.data.split('#');
        //Array off HTMl strings
        for (var l = 1; l <= splits.length; l++) {  
          //Putting all Html strings into templateCache                              
          $templateCache.put('templates/' + value +'.html', splits[l - 1]);

          }
        }
     });
Run Code Online (Sandbox Code Playgroud)

控制器部分:

var rights= [A,B,C,D]

angular.forEach(rights, function (value, key) { …
Run Code Online (Sandbox Code Playgroud)

javascript requirejs angularjs angular-ui-router oclazyload

16
推荐指数
1
解决办法
2295
查看次数

Cordova Ionic Keyboard插件在"Init"上完全禁用

我有以下问题,我需要完全禁用本机键盘.键盘只应在我调用show()时显示,并在我调用close()函数时隐藏(这将在用户切换键盘的Button上).单击Field和on Focus时显示的键盘需要完全禁用.

在Stackoverflow上我发现了这个:InputMethodManager im =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(editText.getWindowToken(),0);

所以我的想法是在"Init"(IonicKeyboard.java中的第52行)我需要改变它.

if ("init".equals(action)) {
            cordova.getThreadPool().execute(new Runnable() {
                public void run() {

                  //new Logic on init
                  View v = cordova.getActivity().getCurrentFocus();
            ((InputMethodManager) cordova.getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0);

              DisplayMetrics dm = new DisplayMetrics();
                cordova.getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
                final float density = dm.density;

                //http://stackoverflow.com/a/4737265/1091751 detect if keyboard is showing
                final View rootView = cordova.getActivity().getWindow().getDecorView().findViewById(android.R.id.content).getRootView();
                OnGlobalLayoutListener list = new OnGlobalLayoutListener() {
                    int previousHeightDiff = 0;
                    @Override
                    public void onGlobalLayout() {
                        Rect r = new Rect();
                        //r will be populated with the coordinates of your view …
Run Code Online (Sandbox Code Playgroud)

javascript keyboard android cordova ionic-framework

5
推荐指数
1
解决办法
895
查看次数