我有一个简单的<input>搜索过滤器设置为项目名称列表AngularJS.
我的列表看起来像这样:
var uniqueLists = {
category1: ['item1', 'item2', 'item3' ... 'item180' ], // Real list contains ~180 items
category2: ['itemA', 'itemB', 'itemC' ... 'itemZZZ' ], // Real list contains ~1080 items
category3: ['otheritem1', 'otheritem2', 'otheritem3' ] // Real list contains 6 items
}
Run Code Online (Sandbox Code Playgroud)
我在Angular中遍历此列表并在<ul>每个类别中打印出结果.
<div ng-repeat="(key,val) in uniqueLists">
<form ng-model="uniqueLists[index][0]">
<input ng-model="searchFilter" type="text" />
<ul>
<li ng-repeat="value in val | filter: searchFilter">
<label>
<input type="checkbox" ng-model="selectedData[key][value]" />
{{value}}
</label>
</li>
</ul>
</form>
</div> …Run Code Online (Sandbox Code Playgroud) 我试图学习基于类的视图,对于细节或列表视图并不复杂.
我有一个搜索表单,我只想查看是否发送查询以显示结果.
这是功能代码(不是我的,来自django书):
def search_page(request):
form = SearchForm()
bookmarks = []
show_results = False
if 'query' in request.GET:
show_results = True
query = request.GET['query'].strip()
if query:
form = SearchForm({'query': query})
bookmarks = Bookmark.objects.filter(title__icontains=query)[:10]
show_tags = True
show_user = True
if request.is_ajax():
return render_to_response("bookmarks/bookmark_list.html", locals(), context_instance=RequestContext(request))
else:
return render_to_response("search/search.html", locals(), context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
忽略ajax事实(现在只是为了使问题更容易),我如何将其转换为基于类的视图?
我快速尝试过这样的事情:
class SearchPageView(FormView):
template_name = 'search/search.html'
def get(self, request, *args, **kwargs):
form = SearchForm()
self.bookmarks = []
self.show_results = False
if 'query' in self.request.GET:
self.show_results = True
query = …Run Code Online (Sandbox Code Playgroud) 我查看了这个网站和谷歌,解决方案对我不起作用.
我在UserControl的ViewModel上有一个命令.好吧,usercontrol有一个绑定到ObservableCollection的ItemsControl.在ItemsControl.ItemTemplate的DataTemplate中,我有一个按钮,我想使用该命令.我无法绑定命令,因为在DataTemplate中,datacontext不是ViewModel而是ObservableCollection的项.
问题是:如果丢失了父datacontext,如何将按钮绑定到命令?
我认为这需要一个简单的解决方案,因为我认为这是一个常见的问题.
想象一下这个场景:
您有一个带有observableCollection的ListBox项作为ItemsSource,因此您在ListBox中为集合中的每个元素使用了一个datatemplate.好吧,您想删除所选项目,并在该行的每一行中放置一个按钮.你是怎样做的?
在MVP中,我可以在按钮的单击事件中执行此操作:
Button but = e.Source as Button;
if (but != null)
Presenter.ActualNote = but.DataContext as Note;
Run Code Online (Sandbox Code Playgroud)
简而言之.您将行的datacontext(所选项目)发送到演示者.
但是,我怎么能用mvvm方式呢?因为我需要使用命令但是我无法将命令分配给按钮,因为该按钮对ViewModel(命令所在的位置)一无所知.
正如您所看到的,按钮必须存在于datatemplate中,然后datacontext不再是ViewModel ....这就是我需要访问父级DataContext以访问命令的原因.
我希望你能更好地理解我的问题.
谢谢.
我刚刚将我的主机升级到MVC 3,但我正在尝试使用SQLCE 4.0做一个"hello world",但我得到了:
很抱歉,在执行您的要求时发生了一个错误.
我看到我的布局和一切,但我看到的不是数据.
在localhost上按预期工作
我有:
<add name="PruebaContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0"/>
Run Code Online (Sandbox Code Playgroud)
作为connectionString.
我把sdf作为项目的一部分,我将System.Data.SqlServerCE.dll添加到项目中,并将本地副本设置为true.
我没有更多的想法.connString,dll在/ bin中,在localhost中工作.
有任何想法吗?
谢谢.
编辑
我现在有一些日志:
没有/ bin上的"System.Data.SqlServerCE.dll":
无法找到请求的.Net Framework数据提供程序.它可能没有安装.
System.ArgumentException:无法找到请求的.Net Framework数据提供程序.它可能没有安装.
很好.他们没有SqlServerCE4.
使用本地副本上的Dll,AKA/bin:
无法加载与版本8482的ADO.NET提供程序对应的SQL Server Compact的本机组件.安装正确版本的SQL Server Compact.有关更多详细信息,请参阅知识库文章974247.
异常详细信息:System.Data.SqlServerCe.SqlCeException:无法加载与版本8482的ADO.NET提供程序对应的SQL Server Compact的本机组件.安装正确版本的SQL Server Compact.有关更多详细信息,请参阅知识库文章974247.
KB说我需要x86和amd64的dll.我在某处读到了如果我将两个目录复制到/ bin,例如:/ bin/x86和/ bin/amd64.我从SqlServerCE 4安装文件夹的私人文件夹中复制了这些文件夹.现在我得到了:
在ADO.NET提供程序和SQL Server Compact的本机二进制文件之间检测到可能的文件版本不匹配,这可能导致功能不正确.这可能是由于存在多个不同版本的SQL Server Compact实例,或者是由于与SQL Server Compact二进制文件具有相同名称的错误二进制文件.请安装匹配版本的SQL Server Compact二进制文件.
好.在SQLServerCE4的根文件夹上我也有一些dll,所以我删除了这两个文件夹并将该dll复制到/ bin:
无法加载文件或程序集'file:/// C:\ HostingSpaces\jesusrod\foxandxss.net\wwwroot\mvc3\bin\sqlceca40.dll'或其依赖项之一.该模块应该包含一个程序集清单.
我想我尝试过所有的事情.Scottgu说SqlServerCE 4应该可以在没有安装的任何服务器上运行.
这似乎很容易,但两个小时后我的头疼了.
我有一个categoryIndex(来自一个选择),我想从具有该Id的observableArray中获取该类别.
我怎么做的?我尝试使用indexOf(但我不确定它是如何工作的,当然我看了doc),我尝试了linq.js但是Where很难使用或者我很愚蠢(我不知道如何从类别中获取Id并比较它).
我的observableArray是这样的:
categories[category { Id=2, Name="Pink", ...}, category { Id=1, Name="Green", ...}]
Run Code Online (Sandbox Code Playgroud)
所以,如果我的索引是2,我只需要一种方法来获得"粉红色"类别.
谢谢.
编辑:
viewModel.addNote = function() {
var selectedCategoryIndex = $("#Categories").val();
var selectedCategory = ko.utils.arrayFirst(this.categories(), function(item) {
return item.Id === selectedCategoryIndex;
});
}.bind(viewModel);
Run Code Online (Sandbox Code Playgroud) 我正在学习Django,我发现了基于类的视图,我想知道如何在这些视图上实现Ajax.
我搜索了github的django项目,我发现一些使用基于类的视图但不是ajax.
那么......有谁知道一个开源项目同时使用这两个东西?这种方式更容易学习.
谢谢 :)
有没有办法从/向POCO和knockoutjs可观察到?
我有一个Note类:
public class Note
{
public int ID { get; set; }
public string Date { get; set; }
public string Content { get; set; }
public string Category { get; set; }
public string Background { get; set; }
public string Color { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的javascript:
$(function () {
ko.applyBindings(new viewModel());
});
function note(date, content, category, color, background) {
this.date = date;
this.content = content;
this.category = category;
this.color = color;
this.background = background;
}
function …Run Code Online (Sandbox Code Playgroud) 我正在使用MVVM Light V3 alpha 3编写一个WPF 4应用程序(使用VS2010 RC),并且在这里遇到了一些奇怪的行为......
我有一个打开a的命令,Window那个Window创建了ViewModel等等 - 那里没什么奇怪的.
在那Window我有一些RelayCommands,例如:
CategoryBeenSelected = new RelayCommand(() => OnCategoryUpdate = true);
Run Code Online (Sandbox Code Playgroud)
没有什么奇怪的 - 它按照我的预期工作.
问题是我不能使用通用RelayCommand的CanExecute方法/ lambda表达式.
这有效:
DeleteCategoryCommand = new RelayCommand<int>(DeleteCategory);
Run Code Online (Sandbox Code Playgroud)
但这不是:
DeleteCategoryCommand = new RelayCommand<int>(DeleteCategory, CanDeleteCategory);
Run Code Online (Sandbox Code Playgroud)
窗口没有出现.我的意思是,我单击打开窗口的按钮,应用程序刚刚被阻止,几秒钟后,Window的InitializeComponent方法抛出一个NullReferenceException(对象引用未设置为对象的实例)
简而言之,如果我将一个CanExecute方法放在a上RelayCommand<T>,Window那么拥有 ViewModel(带有)的那个RelayCommand<T>就无法实例化.如果我删除了CanExecute,Window显示出来.
这里的问题在哪里?我糊涂了.
谢谢.
编辑:根据要求,这是堆栈跟踪:
A first chance exception of type 'System.NullReferenceException' occurred in PresentationFramework.dll at GalaSoft.MvvmLight.Command.RelayCommand`1.CanExecute(Object parameter) at System.Windows.Controls.Primitives.ButtonBase.UpdateCanExecute() at …
我有一个ListView和我编辑它ItemContainerStyle来修改一些风格,但我不知道如何在添加项目时删除恼人的动画.
使用ItemsControl,当您添加新项目时,它会立即显示,没有任何动画.
使用ListView,该项目需要一段时间,然后,它会启动一个动画显示.
我只是想删除它add animation,当我点击Add item它立即出现,没有额外的东西.
我认为它应该属于,ItemContainerStyle但即使我评论了所有的视觉状态动画,并且仍然存在.我错过了一些东西.
基本上我有一个工厂
angular.module('app').factory('gService',gService);
function gService($filter, $window) {
function confirmDialog(message, success, fail) {
var confirmMessage = navigator.notification.confirm(
message,
onConfirm,
'',
[$filter('translate')('OK'), $filter('translate')('CANCEL')]
);
function onConfirm(index) {
return index === 1 ? success() : fail();
}
return confirmMessage;
}
}
Run Code Online (Sandbox Code Playgroud)
如果执行或不执行功能,我想检查此工厂外的条件
if(gService.confirmDialog.onConfirm){
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.如何检查以角度执行的功能?
angularjs ×2
c# ×2
django ×2
knockout.js ×2
wpf ×2
ajax ×1
animation ×1
asp.net-mvc ×1
dynamic ×1
if-statement ×1
javascript ×1
listview ×1
mapping ×1
menu ×1
mvvm ×1
poco ×1
relaycommand ×1