嗯,没有太多要解释的. https://jsbin.com/raqajelufu/edit?html,js,output使用angular.copy复制后,任何File对象属性访问都会引发非法调用异常.
考虑到$ watch根据https://docs.angularjs.org/api/ng/type/$rootScope.Scope在内部使用angular.copy,是否有任何解决办法,这将使得观察File对象成为可能?
我正在使用位于ui-grid.info的角度网格ui-grid .
我正在尝试制作一个自定义过滤器,它将使用日期输入控件按日期过滤网格,一个用于小于,一个用于大于.
我似乎能够在columnDefs中使用它来获取我想要的控件{ field: 'mixedDate', cellFilter: 'date', filterHeaderTemplate: '<div>From <input type="date"> to <input type="date"></div>' }.当将这些东西放在不同的范围内时,我也可以通过设置data-ng-model ="colFilter.term"来进行某种过滤.尽管如此,过滤似乎并不均衡.
有没有人有这方面的代码可行或可以指向我正确的方向?
以下是关于他们自己网站上的主题的一些教程,但我不太确定如何操纵它们以满足我的需求或者甚至可能.
我正在完成从Jasmine 1.3到2.0的迁移.到目前为止,我已经重构了大部分代码以符合2.0的新语法.但是,某种测试仍然失败.
简而言之,我的测试看起来像这样:
var obj = new CustomCriteria();
spyOn(my, "function");
my.function(obj);
expect(my.function).toHaveBeenCalledWith({ big: "fat object" });
Run Code Online (Sandbox Code Playgroud)
我的CustomCriteria班级:
var CustomCriteria = function() {
this.big = "fat object";
};
Run Code Online (Sandbox Code Playgroud)
测试失败,具体如下:
Expected spy function to have been called with [ Object({ big: "fat object" }) ] but actual calls were [ ({ big: "fat object" }) ].
Run Code Online (Sandbox Code Playgroud)
请注意期望如何Object包围它,但第二个没有.这个测试在<1.0的Jasmine中没有失败,但是在我更新Jasmine之后现在失败了.我怎样才能解决这个问题?
更新:我通过创建一个新的对象修修补补围绕new荷兰国际集团一function对对象文字语法,它看来,__proto__s为不同的.也许这影响了Jasmine的平等比较?
承诺使用的模式仍然让我困惑.
例如,在Angular应用程序中,我有一个usersService带方法的服务emailExists(email).显然,它会向服务器执行请求,以检查给定的电子邮件是否已存在.
它感觉自然对我来说,使该方法emailExists(email)返回的承诺,在正常操作解析为true或false.如果我们只有一些意外错误(例如,服务器返回500: internal server error,则应拒绝承诺,但在正常操作中,它将被解析为相应的布尔值.
Hovewer,当我开始实现我的异步验证器指令(by $asyncValidators)时,我发现它想要解析/拒绝承诺.所以,到现在为止,我最终得到了这个相当丑陋的代码:
'use strict';
(function(){
angular.module('users')
.directive('emailExistsValidator', emailExistsValidator);
emailExistsValidator.$inject = [ '$q', 'usersService' ];
function emailExistsValidator($q, usersService){
return {
require: 'ngModel',
link : function(scope, element, attrs, ngModel) {
ngModel.$asyncValidators.emailExists = function(modelValue, viewValue){
return usersService.emailExists(viewValue)
.then(
function(email_exists) {
// instead of just returning !email_exists,
// we have to perform conversion from true/false
// to resolved/rejected promise
if (!email_exists){
//-- email does not …Run Code Online (Sandbox Code Playgroud) 我正在用这个敲打墙 - 我对使用API相对较新,还没有做任何需要身份验证的事情.
我坚持向API发送POST请求.创建内容的端点是:
/entity/node
Run Code Online (Sandbox Code Playgroud)
如果我发送以下内容,我可以发送成功的POST请求:
headers: {
"Authorization": "Basic YWRtaW46MTIzcXdl", //admin:123qwe
},
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是授权.我在这里指定Basic,然后是编码字符串,这是我的管理员登录.因此,当硬编码时,我可以发布.
我的问题 - 当用户正确登录时,我需要设置标题,以便将来所有的帖子请求都能正常工作.我怎样才能在AngularJS中做到这一点?
我试过传递一个动态生成的代码:
"Authorization": "Basic " + auth,
Run Code Online (Sandbox Code Playgroud)
其中auth是base64编码的用户:pass,但这不起作用.我的想法是,无论何时发出POST请求,都需要将此值存储在某处以供检索.但是怎么样?
我尝试使用browserify,angularjs和restangular时遇到问题.
当我尝试要求npm或bower模块时,例如require('restangular),browserify返回空对象.当我需要任何bower或npm模块时会发生这种情况.当我尝试要求任何本地文件时,一切正常.
文件结构:
bower_components/
src/
-client
-app
app.js
backend
backend.module.js
-test
test.module.ls
test.js
node_modules/
Run Code Online (Sandbox Code Playgroud)
app.js
(function() {
'use strict';
require('angular');
var rest = require('restangular');
console.log(rest);
module.exports = angular
.module('app', [
require('restangular').name,
require('./test/test.module').name,
]);
})();
Run Code Online (Sandbox Code Playgroud)
的package.json
"browserify": {
"transform": [
"browserify-shim"
]
},
"browser": {
"restangular": "./bower_components/restangular/dist/restangular.js"
},
"browserify-shim": {
"restangular": "restangular"
}
Run Code Online (Sandbox Code Playgroud)
gulpfile.js
gulp.task('browserify', function() {
gulp.src(['./src/client/app/app.js'])
.pipe(plugins.browserify({
insertGlobals: true,
debug: true
}))
.pipe(plugins.concat('bundled.js'))
.pipe(gulp.dest('./src/client/js'))
});
Run Code Online (Sandbox Code Playgroud)
你能帮助我吗?提前致谢.
我有一个角度应用程序,我在本地使用apache服务.我的vhosts.conf是:
<VirtualHost *:80>
ServerName my.app.com
DirectoryIndex index.html
DocumentRoot /export/www/app
<Directory "/export/www/app">
order allow,deny
allow from all
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.html/$1 [L]
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
如果我去应用程序的根目录,一切都很好.我在应用程序中进行了一些导航,这使我进入my.app.com/some/location并且仍然没有问题.
但是,如果我在此时重新加载页面,则会出现404错误.要回到我想要的地步,我需要回到root并再次通过应用程序导航,或者通过url my.app.com/#/some/location搜索
我可以用重写规则做些什么,这样我就不需要哈希来重新加载路由了吗?我尝试将现有规则编辑为:
RewriteRule ^(.*)$ index.html/#/$1 [L]
Run Code Online (Sandbox Code Playgroud)
任何想法都非常感谢C.
我的页面中有三个选项卡.我正在使用tabset并tab根据Angular Bootstrap Docs.
我设置一个控制器,用于在<div>其具有tabset如
<div ng-controller="Tabs" class="panel panel-default" id="tabs-panel">
<tabset class="panel-body">
<tab heading="Tab 1"> </tab>
<tab heading="Tab 2"> </tab>
<tab heading="Tab 3"> </tab>
</tabset>
</div>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试为我的第二个标签添加另一个控制器时
<div ng-controller="Tabs" class="panel panel-default" id="tabs-panel">
<tabset class="panel-body">
<tab heading="Tab 1"> </tab>
<tab heading="Tab 2" ng-controller="Tab2> </tab>
<tab heading="Tab 3"> </tab>
</tabset>
</div>
Run Code Online (Sandbox Code Playgroud)
我现在发现标题没有显示,我不能再单击Tab2.
这是为什么?如何恢复相同的功能?
这是在现有控制器中添加另一个控制器的正确方法吗?
我的app.js:
var myApp = angular.module('myApp',['ui.bootstrap']);
myApp.controller('Tabs', function ($scope) {
});
myApp.controller('Tab2', function ($scope) {
});
Run Code Online (Sandbox Code Playgroud) 我试图在下拉列表中使用ng-model属性,但是WebStorm一直在告诉它不被允许.当我运行应用程序时,它没有绑定所以我认为它与我的Angular版本有关.我正在运行最新版本,ng-model似乎适用于除select之外的所有其他元素.在上次更新中有什么变化吗?
<div class="form-group">
<label for="selectPost" class="control-label">Posts</label>
<select ng-model="post" class="form-control" id="selectPost" >
<option ng-repeat="post in currentUser.posts" value="{{post._id}}">
{{post.name}}
</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud) 这是我的代码.
$scope.logout=function(){
localstorage.set('user_id', "");
localstorage.set('access-token', "");
localstorage.set('isUserTraverseColony', 0);
localstorage.set('isStarted', 0);
$window.localStorage.clear();
$window.localStorage.removeItem(access-token);
$ionicHistory.clearCache();
$ionicHistory.clearHistory();
};
Run Code Online (Sandbox Code Playgroud)
我想从我的localStorage中删除access-token变量,当我使用它时它适用于浏览器
$window.localStorage.clear();
$window.localStorage.removeItem(access-token);
Run Code Online (Sandbox Code Playgroud)
但它不适用于我的应用程序.
这是我的本地存储工厂
angular.module('starter.controllers').factory('localstorage', ['$window', '$localStorage','$q', function ($window, $localStorage,$q) {
return {
set: function (key, value) {
var deferred = $q.defer();
$window.localStorage[key] = value;
deferred.resolve(1);
return deferred.promise;
},
get: function (key, defaultValue) {
return $window.localStorage[key] || defaultValue;
},
setObject: function (key, value) {
$window.localStorage[key] = JSON.stringify(value);
},
getObject: function (key) {
return JSON.parse($window.localStorage[key] || '{}');
}
}
}]);
Run Code Online (Sandbox Code Playgroud)
任何的想法?