小编Sco*_*lvi的帖子

动态templateUrl - AngularJS

从Angular 1.1.4开始,您可以拥有一个动态模板URL.从这里开始,

templateUrl - 与模板相同,但模板是从指定的URL加载的.由于模板加载是异步的,因此编译/链接将暂停,直到加载模板为止.

您可以将templateUrl指定为表示URL的字符串,或者指定为带有两个参数tElement和tAttrs的函数(在下面的编译函数api中描述)并返回表示url的字符串值.

如何利用它来生成基于我的指令属性的动态模板?显然这不起作用,因为tAttrs.templateType只是字符串"templateType"

templateUrl: function (tElement, tAttrs) {
  if (tAttrs.templateType == 'search') {
    return '/b/js/vendor/angular-ui/template/typeahead/typeahead.html'
  } else {
    return '/b/js/vendor/angular-ui/template/typeahead/typeahead2.html'
  }
}
Run Code Online (Sandbox Code Playgroud)

鉴于我无法访问范围,我该如何管理?

angularjs angular-ui

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

测试模块化AngularJS w/Jasmine&Karma

努力在Jasmine/Karma中设置单元测试.我有一个服务依赖的控制器,该服务有另一个服务依赖.我不按类型(指令,服务等)组织我的模块,而是按功能(布局,摘要视图等)组织模块.

这是架构:

angular.module('myApp', ['ngResource', 'myApp.base', 'myApp.layout','myApp.common']);
angular.module('myApp.base', ['myApp.common']);
angular.module('myApp.common',[]);
angular.module('myApp.layout',['myApp.common']);
Run Code Online (Sandbox Code Playgroud)

控制器:

angular.module('myApp.layout')
    .controller('LayoutCtrl', ['$scope', '$rootScope', '$timeout', 'layoutService', 'urlService', 'BaseService',
        function ($scope, $rootScope, $timeout, layoutService, urlService, BaseService) {
            //controller code here
    });
Run Code Online (Sandbox Code Playgroud)

布局服务:

 angular.module('myApp.layout')
    .service('layoutService', ['$http', '$resource', '$rootScope', '$location', '$route', 'errorHandlingService', 'utilService',
        function ($http, $resource, $rootScope, $location, $route, errorHandlingService, utilService) {
            //service code here
    });
Run Code Online (Sandbox Code Playgroud)

根据我的理解,如果我只是包含beforeEach(module('myApp.layout'));,我应该可以访问我的布局模块中的控制器,服务,过滤器和指令.

相反,以下代码失败:

describe('Layout Controller', function() {
  var ctrl, scope, service;

  beforeEach(module('myApp'));
  beforeEach(module('myApp.layout'));
  beforeEach(inject(function($controller, $rootScope, layoutService) {

      scope = $rootScope.$new();
      service = layoutService;
      //Create the …
Run Code Online (Sandbox Code Playgroud)

unit-testing jasmine angularjs karma-runner

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

使用Grunt.JS缩小一些文件,将所有文件组合在一起

我正在将开发团队从Chirpy转移到视觉工作室的附加组件,用于组合和缩小CSS/JS文件,作为工作流程自动化过程的一部分.

在chirpy中,配置看起来像这样(为简洁而截断):

<FileGroup Name="scripts.combined.js"  Minify="both">
    <File Path="forms.js" Minify="false" />
    <File Path="cookie_monster.js" Minify="true" />
    ...
</FileGroup>
Run Code Online (Sandbox Code Playgroud)

所以在这个删节的情况下,我有2个文件.一个需要缩小,另一个不需要.(根据这里的人,缩小forms.js打破功能,我还没有分配时间来修复它).

grunt,我需要对此列表中的某些文件运行缩小任务,但不在其他文件上运行.然后我需要concat对所有文件(缩小或其他)运行任务.

鉴于uglifyJS需要一个dest集合来输出缩小的文件,我只需将其设置为类似的东西temp.min.js,在我的concat任务中,使用此文件来构建我的scripts.combined.js文件[由缩小和未缩小的文件组成],并使用grunt clean来删除该temp.min.js文件?

有一个更好的方法吗?

[编辑补充]我也担心潜在的加载顺序冲突.当前工具配置为"组合所有这些文件",每个文件上都有一个标志,指示是否应缩小它.我不确定如何使用grunt复制此工作流程

uglifyjs gruntjs

13
推荐指数
2
解决办法
2万
查看次数

下划线以展平父/子对象的嵌套数组

我有一个对象数组,其中每个对象都有一个"children"属性(下面的示例数据).我想把父母/孩子压成一个单独的阵列,每个父母都紧跟着它的孩子.

我使用lo-dash/underscore编写了以下内容,当我为每个父项设置一个且只有一个子项时,它可以工作:

_.flatten(_.zip(myArr, _.flatten(myArr, "children")))
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用类似_.each的东西并构建一个对象,只是想知道是否有一个时髦的方法来使用_来做到这一点.

示例数据:

[{
    name: "Some Name",
    value: 1234,
    children: [{
        name: "Another name",
        value: 3456
    }, {
        name: "A third name",
        value: 9876
    }]
}, {
    name: "Omg Lazer Guns",
    value: 3333,
    children: [{
        name: "PewPewPew",
        value: 4444
    }]
}];
Run Code Online (Sandbox Code Playgroud)

underscore.js

12
推荐指数
2
解决办法
3万
查看次数

部署后没有显示捆绑的CSS ... ASP.NET MVC4

在部署我的MVC应用程序时,.NET 4.5框架正在捆绑和缩小我的CSS.但是,结果文件为空,因此不应用CSS规则.在Chrome中,我收到了Resource interpreted as Stylesheet but transferred with MIME type text/plain警告.在IE9中,我收到CSS was ignored due to mime type mismatch警告.

这就是我的BundleConfig中的内容

bundles.Add(
    new StyleBundle("~/Content/bootstrap").Include(
        "~/Content/bootstrap/bootstrap-responsive.css",
        "~/Content/bootstrap/bootstrap-editable.css",
        "~/Content/bootstrap/FileUpload.css"));
Run Code Online (Sandbox Code Playgroud)

这是我的布局头:

<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="IE=Edge" />
    <title>@ViewBag.Title</title>
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    <meta name="viewport" content="width=device-width" />
    <link href="@ViewBag.StyleUrl" rel="stylesheet" type="text/css" />
    @Styles.Render("~/Content/bootstrap")
    <script src="~/scripts/libs/modernizr/modernizr-2.5.3.js" type="text/javascript"></script>
</head>
Run Code Online (Sandbox Code Playgroud)

额外的样式表用于基于管理工具中的配置的动态加载样式表.

当我在本地运行,或者如果我设置debug ="true",那么我得到我的个人文件和一切看起来应该.如果我将这些硬编码到我的布局页面,它们显示正常.我已经检查过IIS并查看了CSS的正确MIME类型(考虑到硬编码值的工作原理,这是有意义的).我还检查了以确保安装了"静态内容"角色服务,因为我在Google搜索中也遇到过这种情况.

有什么想法吗?

asp.net-mvc bundling-and-minification

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

Silverlight MVVM - 按钮启用和可见性属性

所以我在MVVM应用程序中工作,我开始对功能进行一些亮点和润色.

在我的页面左侧,我显示这些值:

DateActivated
DateCompleted
DateTrialClosed
DateAccountingClosed
Run Code Online (Sandbox Code Playgroud)

如果DB中有日期,我会在文本块中显示它.如果没有,我正在向用户显示一个按钮,说"激活工单","完成工单"等...

我将这8个(4个文本块,4个按钮)控件中的每一个的可见性绑定到我ViewModel的类型中的唯一属性Windows.Visibility.在我的setter中SelectedWorkOrder,我评估SelectedWorkOrder.DateActivated属性的当前值(例如)并相应地设置可见性属性.这对我来说有点冗长,但它按预期工作.

我的下一步是在第一步之后禁用任何可见按钮(逻辑很简单......在单击按钮1之前无法单击按钮2.在单击1和2之前无法单击按钮3).我不确定实现这个的最佳方法是什么.作为一个FYI,我在我的项目中已经有一个boolToVisibility值转换器......我只是不确定实现它与我现在做的有什么不同(参见下面的VM代码).

目前我的XAML有这个:

<TextBlock Text="Proposed:" />
<TextBlock Text="Activated:" />
<TextBlock Text="Eng Completed:" />
<TextBlock Text="Trial Close:" />
<TextBlock Text="Accounting Close:" />
<TextBlock Text="{Binding SelectedWorkOrder.EstimatedStartDate}" Visibility="{Binding ProposedVisibility}" />
<TextBlock Text="{Binding SelectedWorkOrder.DateActivated}" Visibility="{Binding ActivatedTextBlockVisibility}" />
<Button Content="Activate Work Order" Visibility="{Binding ActivatedButtonVisibility}" />
<TextBlock Text="{Binding SelectedWorkOrder.DateCompleted}" Visibility="{Binding EngineeringCompletedTextBlockVisibility}" />
<Button Content="Work Order Eng Complete" Visibility="{Binding EngineeringCompletedButtonVisibility}" />
<TextBlock Text="{Binding SelectedWorkOrder.DateClosed}" Visibility="{Binding TrialCloseTextBlockVisibility}" />
<Button Content="Close Work Order (Trial)" …
Run Code Online (Sandbox Code Playgroud)

c# silverlight mvvm

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

从控制台访问requireJS模块中的骨干对象

我正在开发我的第一个大型Backbone/RequireJS应用程序,我有一个简单的问题.

当我在页面上打开一个视图,并且我在控制台中时,如何访问我的Backbone对象的属性(模型,视图等).

传统上在Backbone中,我这样做:

 var myApp : {
    models: {},
    views: {},
    etc...
}
Run Code Online (Sandbox Code Playgroud)

使用require,我没有这样的全局对象了.我为调试做的只是在窗口上创建一个新对象,然后我可以从控制台访问.有没有办法在不必在窗口上创建新变量的情况下深入研究这个问题?(我显然会在制作之前删除这个全局obj,只是希望保存步骤并直接进入控制台).

干杯.

requirejs backbone.js

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

非阻塞批处理文件执行

我在批处理文件中有以下命令:

"C:\MI2\Stream\bin\Debug\Stream.exe" 19
"C:\MI2\Stream\bin\Debug\Stream.exe" 20
"C:\MI2\Stream\bin\Debug\Stream.exe" 21
"C:\MI2\Stream\bin\Debug\Stream.exe" 23
"C:\MI2\Stream\bin\Debug\Stream.exe" 25
Run Code Online (Sandbox Code Playgroud)

我正在尝试执行我创建的应用程序的5个实例,并为每个实例传递一个不同的参数.我的目标是当我运行这个批处理文件时,它会启动这个应用程序的5个实例,为每个实例加载一个UI组件.最终我会使这个更优雅,并在这周围放一个包装应用程序,但是现在我只想让它们同时运行.

问题是,当我启动这个批处理文件时,它执行第一行,加载UI.而已.它不会移动到第二行.思考?

编辑添加 - 我当然可以从单独的批处理文件中执行此操作,但我希望一键启动.斯科特

batch-file

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

在requireJS中的把手帮手

我正在创建一个帮助器,输出7或8行HTML来清理我的模板(并遵守DRY - 嘿,押韵 - wikka wikka).

这是调用addOn帮助程序的示例

{{#each promotion.CampaignColors}}
    {{{addOn . CampaignColorType.Code CampaignColorType.Name HexColor "some content" "a title"}}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)

现在,根据我的理解,上下文之后的所有内容都应该是一个名为options的哈希.这是我的addOn.js的存根

define([
    'handlebars',
    'hbs!templates/addOn',
], function (Handlebars, AddOnTemplate) {
    function addOn(context, options) {
        var data = {};
        var compiledTemplate = AddOnTemplate(data);
        console.log(compiledTemplate);
        return compiledTemplate;
    }

    Handlebars.registerHelper('addOn', addOn);
    return new Handlebars.SafeString(addOn);
});
Run Code Online (Sandbox Code Playgroud)

但是,选项仅设置为我传递的第一个参数.如果我将方法签名更改为:

function addOn(context, key, displayName, value, content, title, test, options) {
...
}
Run Code Online (Sandbox Code Playgroud)

..我的每个值都被设置,并且选项NOW成为具有空哈希的对象.

声明params明确有效,但我更喜欢使用hash.有关如何做到这一点的任何想法?

requirejs handlebars.js

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

持久数据库连接与打开和关闭

我有一个sql server 2k8数据库,每天填充数十万条记录.

我正在编写一些代码,它们将调用db,检索n条记录,处理它们,并将一些数据写回db.

我有两种方法可以做到这一点(伪代码):

function xyz() {
    conn = conn creation code
    conn.open();
    while(not last record) {
        select next 1000 records
        process each record
        last record = true
    }
    conn.close();
    xyz();
}
Run Code Online (Sandbox Code Playgroud)

基本上每批创建一个连接.第二种方法:

function xyz() {
    conn = connection creation code
    while(conn.open();) {
        select next 1000 records
        process each record
        last record = true
    }
    conn.close();
    xyz();
}
Run Code Online (Sandbox Code Playgroud)

我很好奇什么是更好的做法.我觉得它是后者,但它也会与我的数据库建立一个或多或少的永久/持久连接.我担心可能的内存超支或其他一些问题.

思考?

斯科特

c# sql sql-server

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

嵌入在MVC3 Razor视图中的脚本标记

第一个MVC项目,只是好奇最好的方法是管理它.

我正在创建的所有观点都包含以下内容

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

我更愿意在关闭身体标签之前保留我的js.我知道我显然可以将它移到我的layout.cshtml文件中,但我想有一种更优雅的MVC/Razor方法(特别是如果我有特定于视图的文件,我不想全局加载).

我怎么能做到这一点?

razor asp.net-mvc-3

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

路由和事件 - backboneJS

我应该如何处理BackboneJS中的路由?路由时,在新视图之后,我应该触发事件还是直接渲染视图?

以下是两种情况:

触发事件:

routes: {
    'orders/view/:orderId' : 'viewOrder'
},
viewOrder: function (orderId) {
    var viewOrderView = new ViewOrderView();
    vent.trigger('order:show', orderId);
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我有:

var ViewOrderView = Backbone.View.extend({
    el: "#page",
    initialize: function () {
        vent.on('order:show', this.show, this);
    },
    show: function (id) {
        this.id = id;
        this.render();
    },
    render: function () {
        var template = viewOrderTemplate({ id: this.id });
        this.$el.html(template);
        return this;
    }
});
Run Code Online (Sandbox Code Playgroud)

或者,我应该走这条路:

routes: {
    'orders/view/:orderId' : 'viewOrder'
},
viewOrder: function (orderId) {
    var viewOrderView = new ViewOrderView({id : orderId }); …
Run Code Online (Sandbox Code Playgroud)

backbone.js backbone-routing

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

如果没有jquery tmpl

我正在尝试将我的标记缓存到$ .template中.在其中,我想添加一个条件,其中,如果变量为空,则输出会反映出来.

这是我尝试的片段.当我运行它时,事件类型是正确的或空白."(没有版主列出)"永远不会出现.

我究竟做错了什么?

var markup = '<div class="new_line general_heading">' +
                 '{{if EventType != ""}}' +
                     '${$EventType}' +
                 '{{else}}' +
                     '(No Moderators Listed)' +
                 '{{/if}}' +
             '</div>' +
             '<div class="gray_rule allclear"></div>';
Run Code Online (Sandbox Code Playgroud)

jquery jquery-templates

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