好的,我已经知道你应该RequireJS像这样配置路径
require.config({
paths: {
name: 'value'
}
});
Run Code Online (Sandbox Code Playgroud)
并称之为这样.
require(['name'], function() {
/* loaded */
});
Run Code Online (Sandbox Code Playgroud)
但问题是,我正在环境中工作,我无法访问现有的呼叫require.config(...).对于那些关心的人来说,环境是Azure移动服务预定的工作.Microsoft已在环境中包含RequireJS并配置了路径.我的问题是双重的.
1.如何添加现有require.config()的路径?
我知道require.config()再次调用将破坏现有配置.这是我不想做的.
2.如何知道哪些路径已配置? 我真的不想覆盖任何现有的路径名或意外覆盖任何现有的库.
好吧,我已经和这个问题争了好几个小时了,把问题缩小到一个非常简单的小提琴
问题是,当我在文本输入上使用twitter bootstrap的typeahead插件并进行选择时,该值不会在KnockoutJS ViewModel中更新.我知道我可以破解它的工作,但必须有一些我在这里缺少的东西.
基本上我所拥有的是:
淘汰赛绑定
// Bind twitter typeahead
ko.bindingHandlers.typeahead = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var $element = $(element);
var allBindings = allBindingsAccessor();
var typeaheadArr = ko.utils.unwrapObservable(valueAccessor());
$element.attr("autocomplete", "off")
.typeahead({
'source': typeaheadArr,
'minLength': allBindings.minLength,
'items': allBindings.items,
'updater': allBindings.updater
});
}
};
Run Code Online (Sandbox Code Playgroud)
淘汰ViewModel
function MyModel(){
var self = this;
self.productName = ko.observable();
self.availableProducts = ['One', 'Two', 'Three'];
}
ko.applyBindings(new MyModel());
Run Code Online (Sandbox Code Playgroud)
HTML
<input type="text" data-bind="typeahead:availableProducts, value:productName"/>
Run Code Online (Sandbox Code Playgroud)
其余的东西只是来自Twitter Bootstrap.
你怎么可能KeyNotFoundException在调用字典时得到一个?
鉴于我正在调用的方法的签名:
IDictionary<string, string> RequestParams { get; }
Run Code Online (Sandbox Code Playgroud)
鉴于我正在制作的电话:

鉴于我将返回Dictionary<string, string>如下:
public IDictionary<string, string> RequestParams
{
get
{
NameValueCollection nvc = HttpContext.Request.Params;
#region Collect the Request Params
Dictionary<string, string> dict = new Dictionary<string, string>();
nvc.AllKeys.ForEach(s => dict[s] = nvc[s]);
#endregion
#region Collect the Route Data Present in the Url
RouteData.Values.ForEach(pair =>
{
string param = (pair.Value ?? "").ToString();
if (!String.IsNullOrEmpty(param) && Uri.AbsolutePath.Contains(param))
dict[pair.Key] = param;
});
#endregion
return dict;
}
}
Run Code Online (Sandbox Code Playgroud)
而且我实际上已经检查过它确实会返回一个实例化的和填充的 Dictionary<string, string>
我已经看过很多像这样的jQuery代码,不用说我不喜欢它:
<div id="myDiv">
<a class="clickable" href="#">Click Me</a>
<a class="clickable" href="#">Click Me</a>
<a class="clickable" href="#">Click Me</a>
<a class="clickable" href="#">Click Me</a>
</div>
<script>
$(document).ready(function(){
$('clickable').click(function(){
// Do some stuff...
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
我认识的人都在做这个,因为上述事件绑定和处理需要的HTML结构,可在页面上,但它会导致混合表现,逻辑和配置遍布网站的意见.此外,它几乎使用任何调试器来调试逻辑非常困难.
所以,我已经开始在这个单独的.js文件中编写代码(在这里小提琴):
// BEGIN: Event Handlers
var onLoad = function(){
$('.clickable').data('clicked', false);
};
var onMyDivClick = function(){
var clicked = $(this).data('clicked');
if (clicked) {
$(this).trigger('myCustomEvent');
} else {
alert('you clicked me');
$(this).data('clicked', true);
}
};
var onMyCustomEvent = function(){
$(this).css('color', 'dimGray');
alert('please don\'t click me again');
};
// …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来为任何对象提供通用的本地缓存.这是代码:
private static readonly Dictionary<Type,Dictionary<string,object>> _cache
= new Dictionary<Type, Dictionary<string, object>>();
//The generic parameter allow null values to be cached
private static void AddToCache<T>(string key, T value)
{
if(!_cache.ContainsKey(typeof(T)))
_cache.Add(typeof(T),new Dictionary<string, object>());
_cache[typeof (T)][key] = value;
}
private static T GetFromCache<T>(string key)
{
return (T)_cache[typeof (T)][key];
}
Run Code Online (Sandbox Code Playgroud)
1-有没有办法不使用getfromcache方法?
2-有没有办法确保第二个字典中的类型安全,说所有对象都具有相同的类型.(这是由addToCache方法提供的,但我更喜欢设计中的类型控件).例如,要具有以下类型的_cache
Dictionary<Type,Dictionary<string,typeof(type)>>
Run Code Online (Sandbox Code Playgroud)
谢谢
c# ×2
caching ×1
dictionary ×1
generics ×1
javascript ×1
jquery ×1
knockout.js ×1
requirejs ×1