小编sna*_*ggs的帖子

如何处理drop-down angular-ui中的大项目列表?

我使用angular-ui下拉

它工作正常,但我不知道如何处理下拉菜单中的多个项目.

请考虑以下Plunker中的示例

HTML

<div class="btn-group" dropdown is-open="status.isopen">
  <button type="button" class="btn btn-primary dropdown-toggle" ng-disabled="disabled">
    Button dropdown <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
    <li ng-repeat="item in items"><a href="#">{{item}}</a></li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我想要定义滚动并缩短下拉列表.

有任何想法吗?

html css angularjs angular-ui angular-ui-bootstrap

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

使用指令以角度分割控制器逻辑是一种好习惯吗?

我有非常复杂的控制器(约3K行代码)演示仪表板.Controller包含许多图表,网格表等.

例如,我将网格表逻辑移动到下面提到的指令名称wmGridActionItems.注意,它使用父范围:

app.directive('wmGridActionItems', ['$rootScope', '$timeout', function ($rootScope, $timeout) {
        return {
            restrict: 'E',
            templateUrl: 'views/grid-action-items.html',

            link: function (scope, elem, attrs) {

                // logic goes here
         }
        };
    }]);
Run Code Online (Sandbox Code Playgroud)

和HTML:

<div  ui-grid="gridActionItemsOptions"                           
                      ui-grid-auto-resize
                      ui-grid-pagination
                      ui-grid-selection
                      ui-grid-auto-resize
                      ui-grid-resize-columns>
                </div>
Run Code Online (Sandbox Code Playgroud)

所以在控制器HTML中我只写:<wm-grid-action-items></wm-grid-action-items>

我无法在其他地方使用此指令,但至少我将我的BIG控制器划分为几个小指令,这些指令可以帮助我处理仪表板.

我做错了什么?这是好习惯吗?Angular有其他方法可以解决这个问题吗?

编辑

这是我$StateProvider的仪表板视图:

$stateProvider  
 .state('sidemenu.dash', {
                    url: '/dshmngr',
                    abstract: true,
                    views: {
                        'content': {
                            templateUrl: 'views/dashboard/dashboard_manager.html',
                            controller: 'DashboardMngrCtrl'
                        }
                    }


                })

                .state('sidemenu.dash.main', {
                    url: '/main',
                    views: {
                        'content': {
                            templateUrl: 'views/dashboard/dashboard-main.html',
                            controller: 'DashboardNewCtrl'
                        } …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive

6
推荐指数
1
解决办法
841
查看次数

我们什么时候需要为NSUrlSession使用'finishTasksAndInvalidate'?

当我通过输入后台通知我的应用时,我会根据提到的代码调用:

[[NSNotificationCenter defaultCenter] addObserver: self
                            selector: @selector(handleDidEnterBackground)
                            name: UIApplicationDidEnterBackgroundNotification
                            object: nil];
Run Code Online (Sandbox Code Playgroud)

我有以下代码片段handleDidEnterBackground:

NSURLSession *session;

// ...

sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.my.company"];
sessionConfiguration.allowsCellularAccess = YES;
sessionConfiguration.sessionSendsLaunchEvents = NO;
session = [NSURLSession sessionWithConfiguration:sessionConfiguration 
            delegate:self 
       delegateQueue:nil];


NSURLSessionDownloadTask *task = [session downloadTaskWithRequest:request];
    [task resume];
 // why do I need this line?   
[session finishTasksAndInvalidate];
Run Code Online (Sandbox Code Playgroud)

来自Doc:

/* -finishTasksAndInvalidate returns immediately and existing tasks will be allowed  
* to run to completion.  New tasks may not be created.  The session  
* will continue to make delegate …
Run Code Online (Sandbox Code Playgroud)

ios nsurlsession

6
推荐指数
0
解决办法
1036
查看次数

iOS设备返回不同格式的设备型号,为什么?

我使用此方法获取设备型号名称:

+ (NSString *) machineModel
{
    const char *name = "hw.model";
#if TARGET_OS_IPHONE
    // .model on iOS returns internal model name (e.g. "N51AP") when we'd prefer to see the model identifier here ("iPhone6,1")
    name = "hw.machine";
#endif

    int error = 0;
    size_t length = 0;
    error = sysctlbyname(name, NULL, &length, NULL, 0);

    if (error != 0) {
        return nil;
    }

    char *p = malloc(sizeof(char) * length);
    if (p) {
        error = sysctlbyname(name, p, &length, NULL, 0);
    }

    if (error != …
Run Code Online (Sandbox Code Playgroud)

objective-c ios

6
推荐指数
1
解决办法
722
查看次数

java.lang.OutOfMemoryError:尝试将Java Object转换为Json String时的Java堆空间

我尝试将csv文件转换为对象代表csv中的1行的对象的Json文件200K.

我在32位和Project配置VM参数上安装了Java: -Xmx1024m

但是我得到:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Unknown Source)
    at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
    at java.lang.AbstractStringBuilder.append(Unknown Source)
    at java.lang.StringBuffer.append(Unknown Source)
    at java.io.StringWriter.write(Unknown Source)
    at com.google.gson.stream.JsonWriter.string(JsonWriter.java:478)
    at com.google.gson.stream.JsonWriter.value(JsonWriter.java:328)
    at com.google.gson.Streams.write(Streams.java:113)
    at com.google.gson.Streams.write(Streams.java:136)
    at com.google.gson.Streams.write(Streams.java:136)
    at com.google.gson.Streams.write(Streams.java:124)
    at com.google.gson.Streams.write(Streams.java:136)
    at com.google.gson.Gson.toJson(Gson.java:362)
    at com.google.gson.Gson.toJson(Gson.java:346)
    at com.google.gson.Gson.toJson(Gson.java:260)
    at com.google.gson.Gson.toJson(Gson.java:240)
    at ConvertFromCsv2JsonTWC.init(ConvertFromCsv2JsonTWC.java:186)
    at ConvertFromCsv2JsonTWC.main(ConvertFromCsv2JsonTWC.java:48)
Run Code Online (Sandbox Code Playgroud)

在排队:

Gson gson = new Gson();

String output = gson.toJson(container);// <---- crash
Run Code Online (Sandbox Code Playgroud)

对于50k行,它工作正常.

这是Json I构建的模板:

{
    "crs": {
        "type": "none"
    },
    "type": "FeatureCollection",
    "features": …
Run Code Online (Sandbox Code Playgroud)

java gson

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

valueForKey为可选值Swift抛出错误

我有简单的课程User.当我尝试调用valueForKeykey是可选值时,我收到错误.见下文:

class User : NSObject{
    var name = "Greg"
    var isActive:Bool?        
}

var user = User()
user.isActive = true // initiated

var ageValue : AnyObject! = user.valueForKey("name")// OK

var isActive : AnyObject! = user.valueForKey("isActive") //ERROR
Run Code Online (Sandbox Code Playgroud)

<__ lldb_expr_862.User 0x7fa321d0d590> valueForUndefinedKey:]:此类与密钥isActive不符合密钥值编码.

如果我将启动该值,它将起作用:

var isActive:Bool =  true
Run Code Online (Sandbox Code Playgroud)

如何使它与可选值一起使用?

key-value swift

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

类型Array <String>的不可变值仅具有名为'append'的变异成员

我有一个简单的例子,我调用一些列表并尝试追加新的值.

class User{

    var list:Array<String> = []

    func getList()->Array<String>{
      return list
    }
}

var user = User()
user.getList().append("aaa") // <-- ERROR
user.list.append("aaa") // OK
Run Code Online (Sandbox Code Playgroud)

Immutable value of type Array<String> only has mutating member named 'append'

如果user.getList()返回,为什么它不起作用list.

我知道Java中没有封装,但看起来很奇怪.


[编辑]

关于@MichaelDautermann回答:

var user = User()                        // {["c"]}
var temp:Array<String> = user.getList()  // ["c"]
temp += ["aaa"]                          // ["c", "aaa"]

var z:Array<String> = user.getList()     // ["c"]
Run Code Online (Sandbox Code Playgroud)

swift

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

如何自定义Google Play服务以减少jar大小?

我想知道是否有办法定制google-play-services.jar.

Google Play服务版本6.1

我发现新版本有24K方法,使我的应用程序超出Max方法计数(~65K),因此我无法创建APK文件(或DEX).

在过去,我在某个网站上看到,您可以google-play-services.jar通过启用/禁用未使用的功能进行配置.

我的旧罐子重量是7K(而不是19K),我不能跳到24K,太膨胀了.

有什么建议吗?

[编辑]

我发现这个问题@Eric Lafortune建议使用Proguard

android google-play-services

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

Swift:为什么我不能从override init调用方法?

我有以下代码示例(来自PlayGround):

class Serializable : NSObject{
override init() { }
}

class Device : Serializable{

    var uuid:String

    override init() {

        println("init ")

        self.uuid = "XXX"

       self.uuid = Device.createUUID()

        println(self.uuid)

    }

   class func createUUID() -> String{
       return "XXX2"
    }
}


var device = Device()
Run Code Online (Sandbox Code Playgroud)

您可以注意到我将createUUID方法实现为静态.

但为什么我init不能以静态方式调用此方法?:

class Serializable : NSObject{
override init() { }
}

class Device : Serializable{

    var uuid:String

    override init() {

        // tried
        // super.init()

        println("init ")

        self.uuid = "XXX"

       self.uuid = self.createUUID() //  ERROR …
Run Code Online (Sandbox Code Playgroud)

swift

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

addsPercentEncoding在Swift中的工作方式不同

我有编码String的obj-C方法:

- (NSString *) encodeValue:(NSString*) unescaped{
    return [unescaped stringByAddingPercentEncodingWithAllowedCharacters:
             [NSCharacterSet URLHostAllowedCharacterSet]];
}
Run Code Online (Sandbox Code Playgroud)

输入: testswiftapppod://

输出: testswiftapppod%3A%2F%2F

我在Swift中编写了相同的方法,但得到了不同的输出: testswiftapppod:%2F%2F

static func encodeValue(unescaped:String!) -> String{
   return unescaped.addingPercentEncoding(
        withAllowedCharacters: CharacterSet.urlHostAllowed)!
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,结肠没有转换

如何解决这个问题?

我使用Xcode 8.3

[编辑]

来自Docs:

//通过将所有不在allowedCharacters集中的字符替换为百分比编码字符,返回从接收方创建的新字符串.UTF-8编码用于确定正确的百分比编码字符.整个URL字符串不能进行百分比编码.此方法旨在对URL组件或子组件字符串进行百分比编码,而不是对整个URL字符串进行编码.将忽略7位ASCII范围之外的allowedCharacters中的任何字符. - (可为空的NSString*)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet*)allowedCharacters NS_AVAILABLE(10_9,7_0);

string encoding objective-c swift

5
推荐指数
2
解决办法
2091
查看次数