我仍然是AngularJS的新手,我正在设置我的第一个应用程序.我希望能够做到以下几点:
angular.module('App.controllers', [])
.controller('home', function () {
$scope.property = true;
}]);
angular.module('App', ['App.controllers'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {templateUrl: 'partials/home.html', controller: home});
}]);
Run Code Online (Sandbox Code Playgroud)
使用此设置会生成以下错误:
Uncaught ReferenceError: home is not defined from App
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何使用angular.module.controller()
(或$controllerProvider.register()
直接)注册控制器并在我的应用程序的其他地方使用注册的控制器.
我的动机:我想避免使用全局构造函数作为我的控制器(如使用angularjs.org时的大多数示例)或复杂的命名空间.如果我可以注册并使用控制器作为单个变量名称(不是那么放在全局范围内),那将是理想的.
是否有内置的方法来阻止$broadcast
事件沿着范围链走下去?
事件传递的事件对象$broadcast
没有stopPropagation
方法(就像$ rootScope提到的文档一样.)但是这个合并的pull请求表明$broadcast
事件可以stopPropagation
调用它们.
我试图让Karma亚军在Jenkins构建过程中生成cobertura格式的代码覆盖率报告.我可以让它生成一个coverage.xml文件,但它实际上没有任何覆盖数据.看起来(使用LOG_DEBUG
)覆盖预处理器未运行.
我karma.conf.js
文件中的相关部分是:
files = [
JASMINE,
JASMINE_ADAPTER,
'app/components/angular/angular.js',
'app/components/angular-mocks/angular-mocks.js',
'tmp/scripts/**/*.js',
'tmp/spec/**/*.js'
];
preprocessors = {
'tmp/scripts/**/*.js': 'coverage'
};
// test results reporter to use
// possible values: 'dots', 'progress', 'junit'
reporters = ['dots', 'junit', 'coverage'];
junitReporter = {
outputFile: 'test-results.xml'
};
coverageReporter = {
type: 'cobertura',
dir: 'coverage/',
file: 'coverage.xml'
};
Run Code Online (Sandbox Code Playgroud)
(junit报告正在生成.)
我最近选择了AngularJS而不是ember.js来处理我正在进行的项目,并且到目前为止对它非常满意.关于ember的一个好处是它内置了对具有自动数据绑定的"计算属性"的支持.我已经能够使用下面的代码在Angular中完成类似的操作,但我不确定它是否是最好的方法.
// Controller
angular.module('mathSkills.controller', [])
.controller('nav', ['navigation', '$scope', function (navigation, $scope) {
// "Computed Property"
$scope.$watch(navigation.getCurrentPageNumber, function(newVal, oldVal, scope) {
scope.currentPageNumber = newVal;
});
$scope.totalPages = navigation.getTotalPages();
}]);
// 'navigation' service
angular.module('mathSkills.services', [])
.factory('navigation', function() {
var currentPage = 0,
pages = [];
return {
getCurrentPageNumber: function() {
return currentPage + 1;
},
getTotalPages: function() {
return pages.length;
}
};
});
// HTML template
<div id=problemPager ng-controller=nav>
Problem {{currentPageNumber}} of {{totalPages}}
</div>
Run Code Online (Sandbox Code Playgroud)
我希望UI能够currentPage
在navigation
服务发生变化时更新,上面的代码完成了.
这是解决AngularJS中此问题的最佳方法吗?使用$watch()
这样的(重大)性能影响吗?使用自定义事件和 …
在Ember.js的文档中,他们有一个jQuery代码片段,其语法如下:
this.$().button();
Run Code Online (Sandbox Code Playgroud)
这个片段只是变成this
了一个jQuery对象,以便.button()
可以在它上面调用jQuery UI 函数吗?
这个片段是否相同?
$(this).button();
Run Code Online (Sandbox Code Playgroud) 我现在通过polyfill使用自定义元素v1一段时间了.Chrome 54(具有本机v1实现的第一个版本)在初始化元素时开始抛出错误:
DOMException:无法在'Document'上执行'createElement':结果必须没有子节点
违规行很简单:
let el = document.createElement('my-custom-element');
Run Code Online (Sandbox Code Playgroud) connect-src
在内容安全策略中指定指令是否会放宽浏览器的相同原始策略并允许您进行跨源XHR请求?或者此指令仅用于限制已经合法的XHR(即同一来源调用或CORS启用的调用)?
是否可以设置从solrconfig.xml
文件中发送自定义HTTP响应头?我认为可能可以添加一些配置到该<requestDispatcher>
部分,因为它控制缓存头.
我确信这在servlet容器配置(Jetty,Tomcat等)中是可行的,但我想在Solr的配置文件中尽可能这样做.
如果这有任何区别,我试图为Access-Control-Allow-Origin
来自不同主机的CORS AJAX请求设置标头.
网络工作者是否减轻或加剧了JavaScript和浏览器环境中的任何已知安全问题?
我eval
以一种奇怪的方式使用函数,作为构造函数.
try {
var y = new eval()
} catch(error) {
console.log("caught a " + error.name + ": " + error.message);
}
Run Code Online (Sandbox Code Playgroud)
它会抛出错误,
caught a TypeError: function eval() { [native code] } is not a constructor
Run Code Online (Sandbox Code Playgroud)
如错误消息所示,eval是一个函数,但不是构造函数.
问题是,不是所有的javascript函数都可以作为构造函数吗?
我正在查看源代码附带的redux todomvc示例,并且有一些我以前没见过的JavaScript表示法.我熟悉ES6 export
语法,但不明白这段代码片段末尾的导出语句是做什么的.为什么App类与connect函数的结果相结合?
import React, { Component, PropTypes } from 'react'
import { bindActionCreators } from 'redux'
import { connect } from 'react-redux'
import Header from '../components/Header'
import MainSection from '../components/MainSection'
import * as TodoActions from '../actions'
class App extends Component {
render() {
const { todos, actions } = this.props
return (
<div>
<Header addTodo={actions.addTodo} />
<MainSection todos={todos} actions={actions} />
</div>
)
}
}
function mapStateToProps(state) {
return {
todos: state.todos
}
}
function mapDispatchToProps(dispatch) {
return { …
Run Code Online (Sandbox Code Playgroud) 鉴于这段代码:
var SuperClass = function(a, b) {
this.a = a;
this.b = b;
};
SuperClass.prototype.getA = function() {
return this.a;
};
var SubClass = function(a, b, c) {
SuperClass.call(this, a, b);
this.c = c;
};
Run Code Online (Sandbox Code Playgroud)
为了启动SubClass
原型,大多数建议似乎如下:
SubClass.prototype = new SuperClass();
Run Code Online (Sandbox Code Playgroud)
对我来说,创建(实例化)一个新SuperClass
对象(具有自己的属性a
和b
属性)似乎很奇怪,只是作为它的原型SubClass
.
这也有效:
// anti-pattern
SubClass.prototype = SuperClass.prototype;
Run Code Online (Sandbox Code Playgroud)
但它通过SuperClass.prototype
引用传递对象,因此您添加到的任何内容SubClass.prototype
也会添加到SuperClass.prototype
,因为它们是同一个对象.在大多数情况下,这不是预期的行为.
问题:有没有办法实现正确的原型设计而不创建一个实例SuperClass
作为SubClass
基础原型?
好吧,我对此进行了很多搜索,但是找不到关于它如何工作的详尽文档,如果有人可以举一个例子来说明如何做到这一点,那将是很棒的
javascript ×6
angularjs ×3
security ×2
ajax ×1
cors ×1
ecmascript-6 ×1
ember.js ×1
eval ×1
http-headers ×1
jquery ×1
karma-runner ×1
oop ×1
redux ×1
solr ×1
this ×1
web-worker ×1