小编mgs*_*mgs的帖子

在Typescript中声明并初始化一个Dictionary

给出以下代码

interface IPerson {
   firstName: string;
   lastName: string;
}

var persons: { [id: string]: IPerson; } = {
   "p1": { firstName: "F1", lastName: "L1" },
   "p2": { firstName: "F2" }
};
Run Code Online (Sandbox Code Playgroud)

为什么不初始化被拒绝?毕竟,第二个对象没有"lastName"属性.

dictionary initialization typescript

215
推荐指数
8
解决办法
32万
查看次数

Chrome DevTools Profiler

在Javascript应用程序中搜索一些内存泄漏,我尝试使用Chrome DevTools Profiler.是否有一些详细信息描述了可能在其中找到的所有条目?

例如,在执行一个简单的"打开主页,打开另一个页面,返回主页"并查看快照的比较后,我可以找到具有大对象数和我感兴趣的行"(数组)".打开那个节点时,我看到成千上万行...

  • (脚本行结束)[] @ 89876
  • (转换数组)[] @ 748323
  • (对象属性)[] @ 77529
  • (地图描述符)[] @ 13823
  • (代码重定位信息)[] @ 722653
  • [] @ 748003
  • (对象元素)[] @ 40917

我在哪里可以读到这个?

javascript profiler google-chrome google-chrome-devtools

7
推荐指数
1
解决办法
3074
查看次数

为什么函数的行为类似于计算?

给出以下HTML/JS(http://jsfiddle.net/mgs_jsfiddle/gUhm2/)

<div data-bind="foreach: users">
    <p data-bind="click: $root.onClick">
        <span data-bind="text: id"></span>
        <span data-bind="text: firstName"></span>
        <span data-bind="text: $root.isSelected($data)"></span>
    </p>
</div>

$(function() {
    function ViewModel() {
        var self = this;
        self.users = [
            { id: 1, firstName: "Bob" },
            { id: 2, firstName: "David" },
            { id: 3, firstName: "Walter" }
            ];
        self.selectedId = ko.observable(1);
        self.isSelected = function(user) {
            return user.id === self.selectedId() ? "YES" : "NO";
        };
        self.onClick = function(user) {
            self.selectedId(user.id);
        }
    };
    ko.applyBindings(new ViewModel());
});
Run Code Online (Sandbox Code Playgroud)

显示一个列表.通过单击一行,行的id将存储到selectedId. …

javascript knockout.js computed-observable

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

使用requirejs与Typescript和AMD相结合的相对路径

有几个Javascript文件,组织在文件夹Scripts/folder1,Scripts/folder2,...

使用requirejs.config.baseUrl,文件夹被定义为默认文件夹,例如Scripts/folder1.然后在requirejs.config.paths中,一些文件仅使用文件名进行寻址,一些文件使用相对路径进行寻址(如../folder2/blabla).

编码Typescipt文件folder2/blabla.ts时,我们需要来自folder1的模块"math".所以我们写

import MOD1 = module("../folder1/math");
Run Code Online (Sandbox Code Playgroud)

关于打字稿,任何事都可以.它可以找到模块.但是,有了requirejs就会出现问题.它不知道模块"../folder1/math",它只知道"数学".

问题似乎是import语句需要一个文件名,从当前目录开始处理.但是,这不是requirejs知道的模块ID.

在requirejs配置和Typescript中的import语句中的任何地方使用绝对路径可以解决问题.

我做错了吗?或者是绝对的路径?

amd relative-path requirejs typescript

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

Web Essentials LESS 编译器没有给出错误消息

使用 Visual Studio 2012 Update 2、Web Essentials 2.7。

假设LESS有错误。保存文件时,预览窗格中会显示一条消息。上面写着...

/*

Compile Error. 
See error list for details

*/
Run Code Online (Sandbox Code Playgroud)

LESS 中出现什么样的错误并不重要。任何错误均按上述方式处理。

能怎么办,所以给出详细的错误信息?

compiler-construction compiler-errors less web-essentials

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

通过requirejs自动加载模块

我想加载jQuery加上几个带requirejs的插件.设置配置对象"paths"和"shim"属性有效.所以从TypeScript中我可以要求jQuery并通过amd依赖加载插件.

现在我想最小化加载jQuery和插件所需的代码.我可以以某种方式告诉requirejs"每当需要jQuery时,通过路径属性中给出的路径加载它.然后加载以下插件......".

基本上这将允许我只需要jQuery.所有插件也会自动加载.

javascript requirejs

2
推荐指数
1
解决办法
795
查看次数

通过AMD加载Breeze

我尝试将Breeze与:TypeScript,AMD模块,requirejs,knockout一起使用.

看看Breeze代码,我可以看到它需要通过名称"ko"进行淘汰.但是,还有其他组件需要通过名称"knockout"进行淘汰.

因此,如果我使用路径"knockout"创建requirejs的配置,加载器将抱怨"ko"尚未加载.如果我手动更改Breeze代码,将"ko"替换为"knockout",一切正常.

可以做什么,所以不需要更改Breeze代码?

javascript amd requirejs knockout.js breeze

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