我有一个从-1000到1000的数字,我有一个数字的数组.像这样:
[2, 42, 82, 122, 162, 202, 242, 282, 322, 362]
Run Code Online (Sandbox Code Playgroud)
我希望我的数字更改为最接近的数组.
例如,我得到80我希望得到的数字82.
为了帮助这篇文章的未来观众,我创建了这个pluma答案的演示.
我的目标似乎相当简单.
step(1)
.then(function() {
return step(2);
}, function() {
stepError(1);
return $q.reject();
})
.then(function() {
}, function() {
stepError(2);
});
function step(n) {
var deferred = $q.defer();
//fail on step 1
(n === 1) ? deferred.reject() : deferred.resolve();
return deferred.promise;
}
function stepError(n) {
console.log(n);
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,如果我在第1步失败,两个stepError(1)AND都会stepError(2)被解雇.如果我不return $q.reject那么stepError(2)就不会被解雇,但step(2)会,我明白了.除了我想做的事以外,我已经完成了所有的事情.
如何编写promises以便我可以在拒绝时调用函数,而无需调用错误链中的所有函数?或者还有另一种方法来实现这一目标吗?
这是一个现场演示,所以你有一些工作.
我有点解决了.在这里,我在链的末尾捕获错误并传递数据,reject(data)以便我知道错误函数中要处理的问题.这实际上不符合我的要求,因为我不想依赖于数据.它会很蹩脚,但在我的情况下,将错误回调传递给函数会更加清晰,而不是依赖于返回的数据来确定要做什么.
step(1)
.then(function() {
return step(2);
})
.then(function() …Run Code Online (Sandbox Code Playgroud) 我正在使用ng-repeat和我的代码我有'n'个基于ng-repeat的文本框.我想将文本框与三列对齐.
这是我的代码
<div class="control-group" ng-repeat="oneExt in configAddr.ext">
{{$index+1}}.
<input type="text" name="macAdr{{$index+1}}"
id="macAddress" ng-model="oneExt.newValue" value=""/>
</div>
Run Code Online (Sandbox Code Playgroud) 我一直在收到这个错误,因为我正在尝试实现bootstrap Modal窗口.可能是什么原因造成的?我在http://angular-ui.github.io/bootstrap/#/modal复制/粘贴了所有内容.
我有以下angularjs代码:
$scope.clients = commonFactory.getData(clientFactory.getClients());
if ($scope.clients.length > 0) {
$scope.sampleForm.ClientId = $scope.clients[0].ClientId;
}
Run Code Online (Sandbox Code Playgroud)
而commonFactory中的getData函数:
factory.getData = function (method) {
method.then(function (response) {
return response.data;
}, function (error) {
$rootScope.alerts.push({ type: 'error', msg: error.data.ExceptionMessage });
});
};
Run Code Online (Sandbox Code Playgroud)
问题是,由于异步调用,$ scope.clients.length在遇到该行时未定义.
有没有办法不进行长度检查,直到我知道已经分配了$ scope.clients?我看过这样的事情:
$scope.clients = commonFactory.getData(clientFactory.getClients()).then(function () {
if ($scope.clients.length > 0) {
$scope.sampleForm.ClientId = $scope.clients[0].ClientId;
}
});
Run Code Online (Sandbox Code Playgroud)
试图链我的then承诺,但没有骰子......这里的目标是让GetData方法,以避免一堆烦人的代码捕获错误...也许我要对此错了吗?
我正在尝试模板模板,如下所示:
{{{
{
"name" : "{{name}}",
"description" : "{{description}}"
}
}}}
{{{debug this}}}
Run Code Online (Sandbox Code Playgroud)
<h1>{{name}}</h1>
Run Code Online (Sandbox Code Playgroud)
我希望三个括号留在哪里,但是用传入的JSON代替双括号.任何人都知道在没有编写后处理JS代码的情况下执行此操作的最佳方法,如果没有,是否有一个很好的nodeJS模板引擎场景类型?
我在ASP.NET MVC 4上使用Angular JS,我使用脚本捆绑从cdn加载,并且在cdn失败的情况下也从原始服务器加载,如下所示:
var jQuery = new ScriptBundle("~/bundles/scripts/jquery",
"//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js") // CDN
.Include("~/Scripts/jquery-{version}.js"); // Local fallback
jQuery.CdnFallbackExpression = "window.jQuery"; // Test existence
bundles.Add(jQuery);
Run Code Online (Sandbox Code Playgroud)
和
var angular = new ScriptBundle("~/bundles/scripts/angular",
"//ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.min.js")
.Include("~/Scripts/angular.js");
angular.CdnFallbackExpression = "window.angular";
bundles.Add(angular);
Run Code Online (Sandbox Code Playgroud)
使用window.jQuery和window.Angular分别检测jQuery或AngularJS是否相当容易.ASP.NET捆绑机制评估CdnFallbackExpression文本以查看它是否需要回退到源服务器.
但是,在AngularJS的更高版本中,其他模块(如ngRoute和ngResource)被分成自己的文件,由开发人员自行决定加载.
如何检测是否加载了其他AngularJS模块?我可以在控制台中输入什么来查看ngAnimate,ngRoute,ngResource等是否成功从CDN加载?
让我解释.我正在开发一个javascript应用程序来帮助人们开发网站.我不会明确地了解它的作用,只知道它的工作原理是将它的html/inline css接口叠加在正在开发的网站上,并提供各种工具,如跟踪图像和代码缩小器.
我把它作为.js文件存储在服务器上.所有人要访问我的应用程序都是复制并粘贴一小部分html到他们的页面上使用它,如下所示:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="www.example.com/application.js">
<div class="application"></div>
Run Code Online (Sandbox Code Playgroud)
然后使用jquery的.html()函数将接口的html和内联css插入到'application'div中.
一切都很完美.
除了一件事.加载时间.当用户开发他们的网站时,他们将不断刷新他们的页面,这导致他们不得不等待大约3秒钟(随着时间的推移非常烦人)加载应用程序的界面.
当然,如果打开浏览器的缓存,则问题会消失,但如果您正在开发网站,则需要禁用缓存!这是一个难题.
然后我想使用本地存储对象来保存接口的svg图形的字符串,然后将.html()这些字符串转换为内联css.这是一个精心设计的解决方法,但只有开发人员才会使用此工具.它不是最终用户的事情.它也很漂亮,但事实是,浏览器仍然需要下载脚本才能知道访问本地存储的图像!处理器速度不是瓶颈,而是带宽.
所以我在考虑将脚本本身存储在本地存储对象中,并使用一个很小的初始化脚本来运行它.
初始化脚本将简单地从本地stroage对象中检索脚本作为字符串,相应地解析它然后运行它.
重申我的问题,运行它是我不能做的部分!我可以通过.html(脚本)将脚本插入到页面中,但是我该如何运行呢?
我有一个html选择选项
<select>
<option ng-repeat="field in filter.fields" value="{{field.id}}">{{field.name}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我正在从ng-repeat迭代,我想基于一个可选择的字段来禁用选项
<select>
<option ng-repeat="field in filter.fields" {field.selectable==true?enable:disable} value="{{field.id}}">{{field.name}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我怎么能用角度实现这个目标?
我不知道这是不是一个好习惯...我在路由配置中定义了一个控制器,但因为我HomeCtrl在ng-if声明中他不能听,loginSuccess所以我做了MainCtrl哪些听取loginSuccess并做出适当的反应.这段代码工作正常,但这对我来说就像是一个黑客.我应该删除MainCtrl并使其成为一项服务吗?如果是这样,一些例子真的很棒.
的index.html
<body ng-app="myApp" ng-controller="MainCtrl">
<div ng-if="!isLoged()">
<signIn></signIn>
</div>
<div ng-if="isLoged()">
<div class="header">
<div class="nav">
<ul>
<a href="/"><li class="book">navItem</li></a>
</ul>
</div>
</div>
<div class="container" ng-view=""></div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
App.js
angular.module('myApp', [])
.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'HomeCtrl'
})
.otherwise({
redirectTo: '/'
});
})
.controller('MainCtrl', function ($scope) {
$scope.user = false;
$scope.isLoged = function(){
if($scope.user){
return true;
}else{
return false;
}
}
$scope.$on('event:loginSuccess', function(ev, user) { …Run Code Online (Sandbox Code Playgroud)