我知道我不是第一个,可能很多人经常在这里提出类似的问题,这个问题可能是另一个结束投票的候选人.我不是想开始另一轮无尽的圣战,我不是在问哪种语言更好.这不是"一对一"系列的问题.但我需要你的意见.
我公司最近指派我进行iOS移动开发.虽然我的第一个也是最喜欢的语言是c#,但我不介意学习新的语言.显然我没有Objective-C的问题.当然,有些结构现在看起来不太可读,但一周后我觉得语言本身与c#相比并不是很可怕.
在一开始我决定首先了解人们的意见,在那里我读到:
如何在MonoTouch和Objective-C之间做出决定?
还有这里:
适用于iphone应用的MonoTouch和C#VS Objective C.
当然我的第一选择是使用Monotouch.我有一本书,我下载了一个教程.但后来我意识到,不管怎样,我都需要学习原生的iOS SDK基础知识,如果过了一段时间我需要深入研究,我需要研究那些用Objective-c编写的样本.
我知道MonoTouch现在要比半年前好多了,Miguel和他的工作人员改进它,而且每天都会变得更好.这种产品的报酬绝对公平合理.我不介意花400美元购买许可证.
我知道真正的问题不在于objective-c,而在于基础和CocoaTouch库,这需要一些时间来学习.
据我所知,有些东西很难通过本地库来玩,比如XML处理,REST调用以及其他一些东西,MonoTouch在这里可能非常方便
这与人们担心Apple拒绝使用MonoDevelop编写的应用程序的旧时代不同.今天在AppStore中有相当多的MD应用程序.当然Apple无法预测,但他们不太可能很快开始删除应用程序.即便如此,我相信Miguel和他的团队也会提出解决方案.
所以,我的好奇心是:有多少人在使用MonoTouch后有时会从MonoTouch切换回(或考虑转回)Objective-C和Xcode?为什么?可能是什么原因?是否有某些东西可以强迫某人重新设计在MD中创建的应用程序并使用Xcode和Objective-C重写它?
可以ng-click通过使用$event属性拦截类似处理程序中的当前事件对象.
但是有可能获得调用该方法的元素吗?
例如:
<div ng-controller='myController'>
<div>{{distortThatDiv($element)}}</div>
</div>
Run Code Online (Sandbox Code Playgroud) 性能选项卡上的Batarang显示在应用程序的根目录上,angular是调用函数,如下所示:
function (a){var e,f,i=a.$eval(h),m=hc(i,.
根据batarang,它的速度非常缓慢,当我在应用程序上获得更多行时,它会减慢应用程序并使Firefox崩溃(尽管Chrome仍在处理它).那到底是做什么的?我该如何解决这个问题?
你如何从javascript文件直接指向.cshtml视图?例如,为什么我不能使用angular.js的.cshtml视图?像在这个例子中:
.directive('encoder', ($timeout) => {
return {
restrict: 'E',
transclude: true,
scope: 'isolate',
locals: { service: 'bind' },
templateUrl: 'encoderTemplate.cshtml' // <-- that's not possible?
}
});
Run Code Online (Sandbox Code Playgroud)
当然可以有一个返回你想要的动作方法,但我很好奇是否可以直接引用剃刀视图.
所以.曾几何时,有四种神奇的生物:asp.net mvc,require.js和angular.一位聪明的巫师决定把它们放在同一个房子里,让asp.net的每一个视图都拥有自己的"代码隐藏"javascript文件;
首先他加入了 _Layout.cshtml
<script data-main="/main" src="~/Scripts/require.js"></script>
Run Code Online (Sandbox Code Playgroud)
然后他main.js在根中创建:
require.config({
baseUrl: "/Scripts/",
paths: {
'jquery': 'jquery-1.9.1.min',
'jquery-ui': 'jquery-ui-1.10.2.custom.min',
'angular': 'angular.min',
'ng-grid': 'ng-grid-2.0.2.debug'
},
shim: {
'jquery': { exports: "$" },
'underscore': { exports: "_" },
'jquery-ui': ['jquery'],
},
});
// Standard Libs
require(['jquery','jquery-ui','underscore','angular']);
Run Code Online (Sandbox Code Playgroud)
没什么花哨和神奇的.但后来他创建了一个html助手:
public static MvcHtmlString RequireJs(this HtmlHelper helper)
{
var controllerName = helper.ViewContext.RouteData.Values["Controller"].ToString(); // get the controllername
var viewName = Regex.Match((helper.ViewContext.View as RazorView).ViewPath, @"(?<=" + controllerName + @"\/)(.*)(?=\.cshtml)").Value; //get the ViewName - extract it from ViewPath by …Run Code Online (Sandbox Code Playgroud) 如何启用源映射?我这样做:
var browserify = require("gulp-browserify")
gulp.task("compile:client", function() {
gulp.src("src/client/app.coffee", {
read: false
})
.pipe(browserify({
debug: true // THIS DOES NOTHING :(
transform: ['coffeeify'],
extensions: ['.coffee']
}))
.pipe(rename('app.js'));
});
Run Code Online (Sandbox Code Playgroud)
哎呀...出于某种原因,在gulub-browserify 的github页面上,它说:PLUGIN是BLACKLISTED.
我不明白......我觉得如何使用浏览器和我的coffeescript文件呢?
UPD:哈!我错了:debug选项有效.它只是将源地图信息粘贴到输出javascript文件中.真棒.问题仍然悬而未决:为什么这个插件被列入黑名单?
我试图通过运行它来节点检查器来调试我的gulp taks
node-debug $(which gulp) build
Run Code Online (Sandbox Code Playgroud)
这是有效的,除了我的Gulpfile不是,.js但.coffee由于某种原因它开始挂起差不多一分钟说:
需要外部模块咖啡脚本/注册
我正常运行它并不需要很长时间,如果我使用Gulpfile.js它几乎立即启动节点检查器.当我使用Gulpfile.coffee时为什么需要太长时间?
这不是什么大问题,但有点烦人
我需要有本地Couchbase集群并将我们的prod集群中的数据复制到它上面,不能直接在OS X上安装它(因为vbuckets不兼容 - prod集群在linux上).
Docker用于救援.我已经设法创建了Dockerfile, 你可以在这里看到它.
现在,集群运行,它可以在LAN内访问,所有必要的端口都转发 - 我使用了这里描述的技巧
我在XDCR选项卡中成功创建了集群引用,但每当我尝试复制存储桶的数据时 - 它会将我的集群的主机名更改为某个非敏感的IP地址并创建一个日志条目:
Updated remote cluster `mycluster` hostname to "172.17.0.5:8091"
because old one ("mylaptop.company.com:8091")
is not part of the cluster anymore
Run Code Online (Sandbox Code Playgroud)
我知道Couchbase对ip地址非常敏感,正如你所看到的,我正在使用我的机器的主机名(docker容器的主机).我尝试使用改变容器的主机名docker run -h,这似乎没有帮助.
有人,你们有没有设置XDCR与在docker容器中运行的集群?
<data:DataGridTemplateColumn Header="Name">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}">
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
<data:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Name}">
</DataTemplate>
</data:DataGridTemplateColumn.CellEditingTemplate>
</data:DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
这是模板列的明显例子,对吧?这可能有什么问题?所以,这就是事情 - 当用户通过点击TAB键导航DataGrid时,它需要点击TAB两次(!)才能编辑TextBox中的文本.一旦用户获得列焦点,我怎么能让它可编辑,我的意思是即使他刚刚开始打字?
好.我找到了一种方法 - 进入Grid.KeyUp()我把代码放在下面:
if (Grid.CurrentColumn.Header.ToString() == "UserName")
{
if (e.Key != Key.Escape)
{
Grid.BeginEdit();
// Simply send another TAB press
if (Keyboard.FocusedElement is Microsoft.Windows.Controls.DataGridCell)
{
var keyEvt = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, Key.Tab) { RoutedEvent = Keyboard.KeyDownEvent };
InputManager.Current.ProcessInput(keyEvt);
}
}
}
Run Code Online (Sandbox Code Playgroud) 脚本注册器甚至在加载jquery.validation.min.js之后
Html.Telerik().ScriptRegistrar().jQuery(false)
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉它不要这样做?
即使我尝试加载我需要的东西,执行此操作:
@Html.Telerik().ScriptRegistrar().jQuery(false).DefaultGroup(g =>
{
g.Add("telerik.common.min.js");
g.Add("telerik.tabstrip.min.js");
}
Run Code Online (Sandbox Code Playgroud)
例如,如果我在页面上有一个telerik网格,它将加载所有必要的脚本,包括grid.min,grid.editing和jquery.validate.min.
如果我忘了定义正确的脚本,我宁愿自己控制它,而不是仅仅为了得到错误,或者不起作用的元素.
如果我尝试使用此代码段:
@Html.Telerik().ScriptRegistrar().jQuery(false).Scripts(s =>
{
s.Add("telerik.common.min.js");
...
Run Code Online (Sandbox Code Playgroud)
它useTelerikContentDeliveryNetwork="true"在web.config中忽略,并在本地服务器上搜索脚本.我还是想用CDN.
UPD:实际上有一种方法可以使用telerik的CDN源,但如果由于某种原因它们已关闭,从项目的服务器加载所有东西?
angularjs ×4
coffeescript ×2
gulp ×2
asp.net-mvc ×1
browserify ×1
c# ×1
couchbase ×1
datagrid ×1
docker ×1
focus ×1
ios ×1
javascript ×1
linux ×1
networking ×1
node.js ×1
objective-c ×1
requirejs ×1
telerik-mvc ×1
wpf ×1
wpfdatagrid ×1
wpftoolkit ×1
xamarin.ios ×1
xdcr ×1