请参见此处:http://www.johnpapa.net/angularjss-controller-as-and-the-vm-variable/
正如标题所示,我正在按照本教程[ http://tech.pro/tutorial/1473/getting-started-with-angularjs-unit-testing]来设置单元测试,除了事实之外一切都很好我似乎无法访问vm变量作为我的$ scope.
dashboard.js
var controllerId = 'dashboard';
angular.module('app')
.controller(controllerId, ['common', 'datacontext', dashboard]);
function dashboard(common, datacontext) {
var getLogFn = common.logger.getLogFn;
var log = getLogFn(controllerId);
var vm = this;
vm.title = 'Dashboard';
Run Code Online (Sandbox Code Playgroud)
dashboard.Spec.js
describe("app module", function() {
beforeEach(module("app"));
describe("dashboard", function() {
var scope,
controller;
beforeEach(inject(function($rootScope, $controller) {
scope = $rootScope.$new();
controller = $controller;
}));
it("should assign Dashboard as title", function() {
controller("dashboard", {
$scope: scope
});
expect(scope.title).toBe("Dashboard");
});
});
});
Run Code Online (Sandbox Code Playgroud)
我试过的:当我在控制器依赖项中直接命名'$ scope'并为其设置"title"属性时,它可以工作(测试通过).但是,我想保持模式不变. …
我需要将数据库表中的列数据类型从varchar
更改nvarchar
为支持中文字符(目前,varchar
具有这些字符的字段仅显示问号).
我知道如何更改值,但我想知道这样做是否安全.在改变之前有什么需要注意的吗?谢谢!
看起来应该很容易但......
有谁知道如何从过滤后的dataTable返回当前行?该oTable.fnGetNodes()
方法返回所有行,我只想要过滤(可见,但包括分页)
// filter on division
var oTable = $('#summary-table').dataTable();
oTable.fnFilter(division_text, 2, true);
// Get the nodes from the table
var nNodes = oTable.fnGetNodes(); // <-- still retrieves original list of rows
Run Code Online (Sandbox Code Playgroud)
我检查过:从Datatables中检索可见数据,但没有太多帮助.
我想在一个表中定义两个可空FK之间的约束,其中如果一个为空,另一个需要一个值,但两者都不能为空,两者都不能有值.逻辑是派生表从任一FK表继承数据以确定其类型.另外,对于有趣的奖励积分,这是一个坏主意吗?
CLR-x86-1.0.0-beta7-15532
VS社区v14.0.23107.0
尝试将我的Web API应用程序发布到本地文件夹,但在"复制到输出路径C:\ temp\PublishTemp"之后,我收到以下消息:
由于构建错误,发布失败.检查错误列表以获取更多详细信息.
但是,没有构建错误或警告.
如果我创建一个新的Web应用程序,它会毫无问题地发布到我的测试文件夹.
我应该在哪里开始排除故障?
我正在尝试将单选按钮'已检查'状态绑定到我的JSON对象中的布尔值,但它没有被设置.
template:(jobReadinessItems是一个"Items"数组)
<tbody>
<tr repeat.for="item of jobReadinessItems">
<td><input id="have" name="readiness" type="radio" checked.bind="item.Have" /></td>
<td><input id="need" name="readiness" type="radio" checked.bind="item.Need" /></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
项目(json):
{
Have: false,
Need: true
}
Run Code Online (Sandbox Code Playgroud)
CS
public class JobReadinessItemDto
{
public bool Have { get; set; }
public bool Need { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我以这种方式绑定它,它会显示值(但我当然无法设置它):
checked.bind="item.Have ? 'on' : 'off'"
Run Code Online (Sandbox Code Playgroud)
为什么它显示"开/关"但不是真/假?
有点不确定如何做到这一点.我需要以与文件服务器上显示的顺序不同的顺序显示文件列表.
我想一种方法是通过匹配的枚举名称值来排序字符串列表.
假设我有一个完整的字符串列表:
List<string> filenames = new List<string>();
Run Code Online (Sandbox Code Playgroud)
我有一个相关的枚举以按特定顺序显示文件:
public enum ProcessWorkFlowOrder
{
File1,
File3,
File2
}
Run Code Online (Sandbox Code Playgroud)
List中的"filenames"字符串值将与Enum的名称完全匹配.
按匹配的枚举值匹配和排序FileNames列表的最佳方法是什么?
对于我的网站,我将导航菜单的选定名称保存在cookie中,并在回发后我读取cookie,然后将背景图像应用于所选菜单项(使用我用于悬停的相同图像).
我为我的"选定"菜单项做了一个课程:
.selected
{
color: Green;
height: 40px;
background: url(images/menu_hover.jpg) bottom no-repeat;
}
Run Code Online (Sandbox Code Playgroud)
当我在回发后检查cookie时,我想申请这个类:
$("#" + $.cookie(cookieName)).addClass("selected");
Run Code Online (Sandbox Code Playgroud)
它似乎只应用背景图像,而不是颜色或高度.为了使颜色和高度完全起作用,我必须使用.css()方法显式设置它们:
$("#" + $.cookie(cookieName)).css({ 'color': "green" });
$("#" + $.cookie(cookieName)).css({ 'height': "40px" });
Run Code Online (Sandbox Code Playgroud)
只是好奇,如果有人知道为什么会发生这种情况?
我有一个使用"标签"的mvc视图,这些标签中的每一个都显示相同数据的不同形式(可从我的viewmodel获得).数据显示如下:
<div id=tab1>
@foreach (Path p in Model.Paths.Where(r => r.PathType == "HR"))
{
(displays html and data)
}
</div>
<div id=tab2>
@foreach (Path p in Model.Paths.Where(r => r.PathType == "IT"))
{
(displays html and data)
}
</div>
Run Code Online (Sandbox Code Playgroud)
等等...因为每次迭代使用相同的html和命名变量(p),不重复这些值的最佳方法是什么?
背景:每当添加或更新"Item"实体时,我都会覆盖SaveChanges()方法以自动生成LastUpdatedDate.
Item.cs
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime? LastUpdated { get; set; }
Run Code Online (Sandbox Code Playgroud)
的DbContext
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
...
// generated value
modelBuilder.Entity<Item>()
.Property(b => b.LastUpdated)
.ValueGeneratedOnAddOrUpdate();
}
public override int SaveChanges()
{
var now = DateTime.UtcNow;
foreach (var item in ChangeTracker.Entries<Item>()
.Where(e => e.State == EntityState.Added || e.State == EntityState.Modified))
{
item.Property("LastUpdated").CurrentValue = now;
}
return base.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是每当调用SaveChanges()时我得到这个异常:
EntityFramework.Core.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理.
附加信息:实体类型"Item"上的属性"LastUpdated"在保存后被定义为只读,但其值已被修改或标记为已修改.
要解决这个问题,我必须将IsReadOnlyBeforeSave和IsReadOnlyAfterSave设置为false,如下所示:
modelBuilder.Entity<Tray>()
.Property(b => b.LastUpdated)
.ValueGeneratedOnAddOrUpdate()
.Metadata.IsReadOnlyBeforeSave = false;
modelBuilder.Entity<Tray>()
.Property(b => b.LastUpdated)
.Metadata.IsReadOnlyAfterSave = false;
Run Code Online (Sandbox Code Playgroud)
题:
这是在EF Core中设置计算属性的正确方法吗? …
在我的MVC应用程序中,我将文件服务器中的文件返回到我的视图中.
为了简化我的问题:假设我从Directory.GetFiles方法返回了file1,file2和file3.我被告知不要返回file2,因此只在我的视图中显示file1和file3.
他们不可避免地会在规则发生变化的时候到来,而file2将需要再次展示.保留当前已过滤文件列表并检查该列表的最明智方法是什么?(不将文件设置为"隐藏"); 我能做的一个想法是将文件名写入存储库并对其进行交叉检查,但我只是担心创建维护灾难...
我有一个更好的解决方案吗?
开始使用HotTowelAngular模板,我正在设置单元测试.陷入困境.
我正在尝试在我的控制器中测试一个正好调用另一个名为"log"的函数的函数.这个"log"是一个存储在私有变量中的函数,它从一个名为"common"的依赖项中获取它的值.
我知道我可能需要以某种方式存根这个函数,但我不确定从哪个特定的例子开始,因为我对angularjs,jasmine等等都很新.任何想法都表示赞赏
单元测试:
describe("quote", function () {
var scope,
controller,
common;
beforeEach(inject(function($rootScope, $controller, _common_) {
scope = $rootScope.$new();
common = _common_;
controller = $controller;
}));
describe("removeAttachment", function() {
it("should remove the attachment when requested", function() {
var vm = controller("quote", { $scope: scope });
vm.attachmentList.push({ FileName: "file1", FileAsString: "..." });
vm.attachmentList.push({ FileName: "file2", FileAsString: "..." });
vm.attachmentList.push({ FileName: "file3", FileAsString: "..." });
expect(vm.attachmentList.length).toEqual(3);
// here's the call where it fails
vm.removeAttachment(vm.attachmentList[1]);
expect(vm.attachmentListCount).toEqual(2);
expect(vm.attachmentList.length).toEqual(2);
expect(vm.attachmentList[1].FileName).toBe("file3");
});
}); …
Run Code Online (Sandbox Code Playgroud) c# ×4
angularjs ×2
hottowel ×2
jasmine ×2
jquery ×2
sql ×2
asp.net ×1
asp.net-mvc ×1
aurelia ×1
css ×1
datetime ×1
enums ×1
file ×1
javascript ×1
karma-runner ×1
linq ×1
list ×1
matching ×1
razor ×1
sql-server ×1
sqldatatypes ×1
unit-testing ×1