小编sna*_*ggs的帖子

如何知道控制器何时完成加载角度?

我有一个案例,app.run向所有控制器发送广播消息,但在其中一些实际加载之前.因此他们没有抓住事件.

这是一个例子:

app.run(function($rootScope){    

    // I get this event too fast and GroupsCtrl still not ready
    ionic.Platform.ready(function(){
        // notify controllers on device ready    
        $rootScope.$broadcast('notifyCtrlOnDeviceReady', device);            
     });
});
Run Code Online (Sandbox Code Playgroud)

和控制器:

app.controller('GroupsCtrl', function($rootScope,$scope){
   $scope.$on('notifyCtrlOnDeviceReady', function(event, device){
           alert('notifyCtrlOnDeviceReady - done');
       });
});
Run Code Online (Sandbox Code Playgroud)
  • 我想在服务中创建一些标志,但它似乎是一种解决方法.

  • 我还想创建一个$watch侦听服务标志并在所有控制器完成初始化时发送广播.

是否有更优雅的方式在加载时通​​知控制器?

谢谢,

angularjs

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

即使在使用CordovaInterface.getThreadPool()之后,Cordova Exec也阻止了主线程

我得到以下警告:

THREAD WARNING: exec()
 call to MyPlugin.setAndroidPreferences blocked the main thread for 49ms.   
Plugin should use CordovaInterface.getThreadPool().
Run Code Online (Sandbox Code Playgroud)

但是从我的代码中我使用cordova.getThreadPool():

private boolean setAndroidPreferences(
        final JSONArray args,
        final CallbackContext callbackContext)
{
    cordova.getThreadPool().execute(new Runnable() {
        @Override
        public void run() {
            try {
                /* ... */

                if ( /* ... */) 
                {
                    final SharedPreferences settings = cordova.getActivity().getSharedPreferences(preferenceLib, Context.MODE_PRIVATE);
                    final SharedPreferences.Editor editor = settings.edit();

                    editor.putString(preferenceName, preferenceValue);
                    editor.commit();
                    callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));                     
                } else {                                                callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR));
                }
            } catch (JSONException e) {
                e.printStackTrace();
                Log.e(TAG, "getSetSharePreferences" + …
Run Code Online (Sandbox Code Playgroud)

android cordova

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

为 Perl 安装了 JSON 模块但无法加载它,无法在 @INC 中找到 JSON.pm

我使用以下命令安装了PERL 的JSON

sudo perl -MCPAN -e 'install JSON'
Run Code Online (Sandbox Code Playgroud)

但我无法使用它,use JSON;导致错误:

在@INC中找不到JSON.pm(您可能需要安装JSON模块)
(@INC包含:/Library/Perl/5.18/darwin-thread-multi-2level
/Library/Perl/5.18
/Network/Library/ Perl/5.18/darwin-thread-multi-2level
/Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2
/System/Library/Perl/5.18/darwin-thread-multi-2level
/System/Library/ Perl/5.18
/System/Library/Perl/Extras/5.18/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.18 .) 位于
/Users/snaggs/Appsflyer/projects/build-machine-sdk/scripts /build_ios.pl 第 13 行。BEGIN 失败 - 编译在 /Users/snaggs/Appsflyer/projects/build-machine-sdk/scripts/build_ios.pl 第 13 行中止。

ls -l /Users/snaggs/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0/JSON/给我:

drwxr-xr-x  3 snaggs  staff    102 Nov 29 12:53 PP
-r--r--r--  1 snaggs  staff  82532 Nov 29 12:53 PP.pm
Run Code Online (Sandbox Code Playgroud)

$ perl -V给我:

Summary of my perl5 (revision 5 version 16 subversion 0) configuration:

  Platform:
    osname=darwin, osvers=16.1.0, …
Run Code Online (Sandbox Code Playgroud)

perl json

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

如何使用Gradle从3个子模块构建1个jar

我有:

  • Android Studio 3
  • 摇动 4.1
  • gradle工具3: classpath 'com.android.tools.build:gradle:3.0.1'

当我只有一个模块并使用gradle工具2时,我使用了:

task makeJar(type: Copy) {
    def releaseFolder = new File('build/intermediates/bundles/release/')
    if (releaseFolder.exists()) {
        from('build/intermediates/bundles/release/')
    } else {
        from('build/intermediates/bundles/default/')
    }
    into('build/outputs/jar/')
    include('classes.jar')
    rename ('classes.jar', 'MY-Android-SDK.jar')
}
Run Code Online (Sandbox Code Playgroud)

现在有3个模块:

              MainModule (com.my)
                 /   \
(com.my.m1) Module1   Module2 (com.my.m2)
Run Code Online (Sandbox Code Playgroud)

我想MY-Android-SDK.jar所有3个模块创建文件。

到目前为止,我将能够为每个模块创建3个jar文件,并以某种方式合并它们,但我认为这样做是不正确的。

有任何想法吗?

android gradle

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

尝试发送模板时在 Mandrill 中出现“无效发件人”错误

我有 4 个模板,但一个返回错误:"reject_reason": "invalid-sender".

我没有发现这个错误。在文档中。

我的帐户中有 4 个模板,当前模板具有以下结构:

  • 模板段: contact-home
  • 发件人地址: info@somecomp.com
  • 来自名字: SOME_COMP

++ 模板作为 HTML。

这是我从 API Logs 发送的请求:

完整请求

{
    "template_name": "contact-home",
    "template_content": [
        {
            "name": "example name",
            "content": "example content"
        }
    ],
    "message": {
        "dest_mail": "mymail@gmail.com",
        "merge": "true",
        "to": [
            {
                "email": "mymail@gmail.com"
            }
        ],
        "merge_vars": [
            {
                "rcpt": "mymail@gmail.com",
                "vars": [
                    {
                        "name": "FNAME",
                        "content": "name"
                    }
                ]
            }
        ]
    },
    "key": "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
Run Code Online (Sandbox Code Playgroud)

全面回应

[
    {
        "email": "abc@gmail.com",
        "status": "rejected",
        "_id": "a305475c544a4f12a52f5a2b205c2505", …
Run Code Online (Sandbox Code Playgroud)

php codeigniter mandrill

4
推荐指数
1
解决办法
3636
查看次数

当试图调用便利init,Swift时调用额外的参数

我有简单的课程:

class WmAttendee{

    var mEmail:String!
    var mName:String!
    var mType:Int!
    var mStatus:String = "0"
    var mRelationShip:String!

    init( email:String, name:String, type:Int) {
        self.mEmail = email
        self.mName = name
        self.mType = type
    }

     convenience init( email:String,  name:String,  type:Int,  status:String, relationShip:String) {
        self.init(email: email, name: name, type: type)
        self.mStatus = status
        self.mRelationShip = relationShip
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试用5个参数测试第二个构造函数时,我得到: Extra argument 'status' in call

var att1 = WmAttendee(email: "myMail", name: "SomeName", type: 1); // OK

var att2 = WmAttendee(email: "mail2", name: "name2", type: 3, status: "2", …
Run Code Online (Sandbox Code Playgroud)

swift

4
推荐指数
1
解决办法
4339
查看次数

如何测试Swift的异步方法

我有以下要从联合运行的课程:

class WmBuildGroupsTask{

init(){}

    func doInBackground() -> WmTransferItem{
         NSThread.sleepForTimeInterval(20)// sleep 20 sec to simulate long task
                            }

    func onPostExecute(transferItem:WmTransferItem){        
        //called when long task finished        
    }


    func execute(){        
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {

            var  transItem:WmTransferItem = self.doInBackground()

            dispatch_async(dispatch_get_main_queue(), {
                self.onPostExecute(transItem)
                });
            });                
      }    
}
Run Code Online (Sandbox Code Playgroud)

我试图从Unitest文件运行:

var task:WmBuildGroupsTask = WmBuildGroupsTask()
task.execute(); 
Run Code Online (Sandbox Code Playgroud)

但测试在doInBackground()方法完成之前完成.

如何使它工作?

swift

4
推荐指数
1
解决办法
3555
查看次数

如何获取重复事件的实时时间?

我使用以下方法来获取日历的所有事件:

public Cursor getEventsCursor(Context context) {        
    long curr = System.currentTimeMillis();
    long begin = curr - DateUtils.DAY_IN_MILLIS * 30; // - 30 days
    long end = curr + DateUtils.DAY_IN_MILLIS * 30;   // + 30 days

    Cursor cur = null;
    ContentResolver cr = context.getContentResolver();

    String selection = Events.VISIBLE + "= ?";
    String[] selectionArgs = new String[] {"1"};
    String order = Events.DTSTART + " DESC";

    Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
    ContentUris.appendId(builder, begin);
    ContentUris.appendId(builder, end);

    return cr.query(builder.build(), EVENT_PROJECTION, 
            selection, selectionArgs, order);
} 
Run Code Online (Sandbox Code Playgroud)

它有效,但是我得到所有重复事件的初始时间!

日志

Feeder …
Run Code Online (Sandbox Code Playgroud)

android android-calendar

4
推荐指数
1
解决办法
680
查看次数

md-autocomplete项目列表?

我有网格ui,其中单元格是有角度的材料md-autocomplete.

我编写了demo:我运行的codepen(仅用于模拟)ng-repeat并尝试每行选择不同的值.

但是,每当我更改一个项目时,所有其他行也会发生变化.我究竟做错了什么?

我的HTML:

 <tr  layout="row" ng-repeat="item in ctrl.items" flex>
        <td class="sc_color" flex>{{$index+1}}.color</td>
        <td flex>
            <md-autocomplete style="margin-bottom:10px;"
        md-selected-item="item.selectedItem"
        md-search-text="ctrl.searchText"
        md-items="item in ctrl.querySearch(ctrl.searchText)"
        md-item-text="item.display"
        md-min-length="0"
        placeholder="Pick a color">
    <md-item-template>
        <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item.display}}</span>
    </md-item-template>
</md-autocomplete>
        </td>
    </tr>
Run Code Online (Sandbox Code Playgroud)

我的items:

self.items = [
      {
        selectedItem: 'aa'
      },
       {
        selectedItem: 'bbb'
      }
    ];  
Run Code Online (Sandbox Code Playgroud)

我使用md-selected-item但听起来像所有项目一样.

angularjs angular-material

4
推荐指数
1
解决办法
2908
查看次数

node.js 简单项目:ReferenceError: &lt;ClassName&gt; 未定义

我尝试学习 Node.js (ES6) 但失败了 require

这是我的结构:

在此处输入图片说明

基础模型.js

"use strict";

class BaseModel {
  constructor(options = {}, data = []) { // class constructor
      this.name = 'Base'
      this.url = 'http://azat.co/api'
      this.data = data
      this.options = options
    }

    getName() { // class method
        console.log(`Class name: ${this.name}`)
    }
}
Run Code Online (Sandbox Code Playgroud)

账户模型.js

"use strict";

require('./baseModel.js');

class AccountModel extends BaseModel {
    constructor(options, data) {

    super({private: true}, ['32113123123', '524214691']) //call the parent method with super
      this.name += 'Account Model'
      this.url +='/accounts/'
    }


    get accountsData() { //calculated attribute getter …
Run Code Online (Sandbox Code Playgroud)

node.js ecmascript-6

4
推荐指数
1
解决办法
7702
查看次数