我正在开发使用Angular的单页面应用程序。 后端公开了需要基本身份validation的REST服务。 获取index.html或任何脚本不需要身份validation。 我有一个奇怪的情况,其中我的一个视图有一个<img>其中src是需要身份validation的REST API的URL。 <img>是由浏览器处理的,我没有机会为它所做的GET请求设置授权头。 这会导致浏览器提示input凭据。 我试图通过这样做来解决这个问题: 在源代码中将img src留空 在“文档准备好”时,使用授权标头对服务( /api/login )进行XMLHttpRequest ,以使authentication发生。 在完成这个调用后,设置img src属性,认为到那时,浏览器将知道在随后的请求中包括授权标题… …但它不。 对图像的请求不带标题。 如果我input凭据,那么页面上的所有其他图像是正确的。 (我也试过和Angular的ng-src但是产生了相同的结果) 我有两个问题: 为什么浏览器(IE10)在成功的XMLHttpRequest之后在所有请求中包含头文件? 我能做些什么来解决这个问题? @bergi询问了请求的详细信息。 他们来了。 请求/ api /login GET https://myserver/dev30281_WebServices/api/login HTTP/1.1 Accept: */* Authorization: Basic <header here> Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; […]
我正在尝试使用ng-repeat与字典样式语法并应用到键值的顺序。 (key, value) in something | orderBy:'key' 看来OrderBy没有像预期的那样工作 这里的例子http://jsfiddle.net/mhXuW/
用AngularJS应用程序提供正确的404的最好方法是什么? 一点背景:我正在构build一个Angular应用程序,并select使用 $locationProvider.html5Mode(true); 因为我希望URL看起来很自然(和多页面的“传统”Web应用程序无法区分)。 在服务器端(一个简单的Python Flask应用程序),我有一个捕获所有的处理程序,redirect到angular应用程序的一切: @app.route('/', defaults={'path': ''}) @app.route('/<path>') def index(path): return make_response(open('Ang/templates/index.html').read()) 现在,我试图找出如何处理404错误。 我见过的大部分Angular应用程序都执行以下操作: .otherwise({ redirectTo: '/' }) 这意味着他们无法提供一个合适的404。 然而,我宁愿返回一个正确的404,404状态代码(主要用于SEO目的)。 用Angular处理404的最好方法是什么? 我应该不用担心,坚持一个全面的? 或者我应该删除捕获所有,并在服务器端提供正确的404? 编辑清晰
在参考书中我读到: 最后,认识到所有的Angular服务都是应用单例是很重要的。 这意味着每个喷油器只有一个给定服务的实例。 但是这个简单的代码似乎不是一个单身人士 'use strict'; angular.module('animal', []) .factory('Animal',function(){ return function(vocalization){ return { vocalization:vocalization, vocalize : function () { console.log('vocalize: ' + this.vocalization); } } } }); angular.module('app', ['animal']) .factory('Dog', function (Animal) { return Animal('bark bark!'); }) .factory('Cat', function (Animal) { return Animal('meeeooooow'); }) .controller('MainCtrl',function($scope,Cat,Dog){ $scope.cat = Cat; $scope.dog = Dog; console.log($scope.cat); console.log($scope.dog); //$scope.cat = […]
例如,考虑这个Plnkr 。 我不知道有多lessfooCollection会员会被预先创build。 所以我不知道有多lessbar模型将会存在。 但是我知道他们将成为angular色模型,我知道他们将会在哪里。 我该如何做$watch ? 我需要这样做,因为我需要在更改bar模型时触发行为。 观察fooCollection本身是不够的, $watch bar监听器不会在更改bar时触发。 相关html: <body ng-controller="testCtrl"> <div ng-repeat="(fooKey, foo) in fooCollection"> Tell me your name: <input ng-model="foo.bar"> <br /> Hello, my name is {{ foo.bar }} </div> <button ng-click="fooCollection.push([])">Add a Namer</button> </body> 相关JS: angular .module('testApp', []) .controller('testCtrl', function ($scope) { $scope.fooCollection = []; $scope.$watch('fooCollection', function (oldValue, newValue) […]
我试图用$ resource来理解AngularJS,然而我在这里看到的大多数例子都没有解释如何使用$ resource实际创build新的实例(或者整个设置看起来如何)。 我已经发布我的代码在这个底部。 我有以下设置,发布到'/ entry / api'应该创build一个新条目。 它自己的入口对象有三个属性:name,description和id。 我认为,调用$ scope.save(); 会做两件事情: 将input字段映射为POST数据 对$资源中定义的URL(在本例中为“/ entry / api”)发一个POST请求 我见过的一些例子是手动将数据映射到资源,如: var entry = new Entry(); entry.name = $name; // defined in entryController entry.description = $scope.description; // <– defined in entryController entry.$save() 我认为这不应该是必要的,因为这些字段是在html中定义的。 这个解决scheme导致: 在后端定义一个模型 在前端定义一个模型(entryController div ) 将entryController div的值添加到模型的JS版本中,最后保存。 这可能是AngularJS的工作方式,但是我认为html中的input字段会自动映射。 否则,如果添加或删除(后端)模型的属性,则代码中至less有3个位置要更新。 你应该如何使用AngularJS和$resource来保存新的对象? angular.module('entryManager', ['ngResource']); function pollController($scope, $resource) […]
有angular的noob在这里。 我正在创build一个recursion显示问题和子问题树的指令。 我正在使用模板中的一个链接,在范围内调用一个函数。 出于某种原因,它不会调用editQuestion()方法。 这是代码和小提琴http://jsfiddle.net/madhums/n9KNv/ HTML: <div ng-controller="FormCtrl"> <questions value="survey.questions"></questions> </div> 使用Javascript: var app = angular.module('myApp', []); function FormCtrl ($scope) { $scope.editQuestion = function (question) { alert('abc'); }; $scope.survey = { // … } } app.directive('questions', function($compile) { var tpl = '<ol ui-sortable' + ' ng-model="value"' + ' class="list">' + ' <li ng-repeat="question in value […]
我使用的是Angularjs $ resource&$ http和apis,但是由于安全原因我需要调用HTTPS请求(在HTTPS协议下工作)。 什么是在angularjs中使用https的方式。 感谢你的答案。
为什么这不工作。 <li ng-if="!area"></li> 感觉有点不合逻辑 <li ng-if="area"></li> 工作得很好。 “区域”在范围内定义为真/假所有解决方法? 我不想使用ng-show / ng-hide,因为它们都在DOM中呈现项目。
我尝试使用蓝鸟的承诺: HTML: <body ng-app="HelloApp"> <div ng-controller="HomeController">{{name}} {{also}}</div> </body> JS: // javascript var app = angular.module('HelloApp', []); app.controller("HomeController", function ($scope) { var p = Promise.delay(1000).then(function () { $scope.name = "Bluebird!"; console.log("Here!", $scope.name); }).then(function () { $scope.also = "Promises"; }); $scope.name = "$q"; $scope.also = "promises"; }); window.app = app; [ 小提琴 ] 然而,无论我尝试了什么,它仍然保持"$q promises" ,并没有更新。 除了我添加了一个手动的$scope.$apply […]