标签: angularjs

Angular.js复制的File对象上的非法调用

嗯,没有太多要解释的. https://jsbin.com/raqajelufu/edit?html,js,output使用angular.copy复制后,任何File对象属性访问都会引发非法调用异常.

考虑到$ watch根据https://docs.angularjs.org/api/ng/type/$rootScope.Scope在内部使用angular.copy,是否有任何解决办法,这将使得观察File对象成为可能?

javascript angularjs angularjs-scope

7
推荐指数
1
解决办法
3040
查看次数

Angular.js ui-grid自定义日期过滤器

我正在使用位于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"来进行某种过滤.尽管如此,过滤似乎并不均衡.

有没有人有这方面的代码可行或可以指向我正确的方向?

以下是关于他们自己网站上的主题的一些教程,但我不太确定如何操纵它们以满足我的需求或者甚至可能.

angularjs angular-ui-grid

7
推荐指数
1
解决办法
2万
查看次数

Jasmine间谍希望用"对象(...)"调用

我正在完成从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的平等比较?

javascript testing jasmine angularjs

7
推荐指数
1
解决办法
3102
查看次数

AngularJS:service的布尔方法是否应该返回为true/false或者被解析/拒绝的promise?

承诺使用的模式仍然让我困惑.

例如,在Angular应用程序中,我有一个usersService带方法的服务emailExists(email).显然,它会向服务器执行请求,以检查给定的电子邮件是否已存在.

它感觉自然对我来说,使该方法emailExists(email)返回的承诺,在正常操作解析为truefalse.如果我们只有一些意外错误(例如,服务器返回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)

javascript promise angularjs angular-promise

7
推荐指数
1
解决办法
1096
查看次数

AngularJS - 在登录时存储基本身份验证

我正在用这个敲打墙 - 我对使用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请求,都需要将此值存储在某处以供检索.但是怎么样?

api rest drupal angularjs

7
推荐指数
3
解决办法
5263
查看次数

Browserify require('restangular')返回空对象

我尝试使用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)

你能帮助我吗?提前致谢.

commonjs angularjs browserify

7
推荐指数
1
解决办法
275
查看次数

vhosts conf for single page app

我有一个角度应用程序,我在本地使用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.

apache angularjs single-page-application

7
推荐指数
1
解决办法
4447
查看次数

用于选项卡的AngularJS控制器

我的页面中有三个选项卡.我正在使用tabsettab根据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)

javascript tabs twitter-bootstrap angularjs ng-controller

7
推荐指数
1
解决办法
3万
查看次数

此处不允许使用属性ng模型

我试图在下拉列表中使用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)

javascript webstorm angularjs

7
推荐指数
2
解决办法
1万
查看次数

如何清除离子中的本地存储数据?

这是我的代码.

$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)

任何的想法?

angularjs cordova phonegap-build ionic-framework

7
推荐指数
1
解决办法
3万
查看次数