在构建Web应用程序时,我仍然对JavaScript代码在MVC模式中的位置感到困惑.我觉得它像这样工作.
因为JavaScript代码是在浏览器中编译的,所以我认为它是View的一部分,但是它处理用户输入,根据这些事件发出服务器请求,然后将数据返回到页面,那么这也会成为Controller的一部分吗?
另外,当他们在MVC中引用域模型时意味着什么?
我在这个网站上看到了下面的例子,并且认为两个答案都是20而不是返回的10.他写道,逗号和赋值都返回一个值,而不是引用.我不太明白这意味着什么.
我理解它与将变量传递给函数或方法有关,即原始类型是通过值传递的,而对象是通过引用传递的,但我不确定它在这种情况下是如何应用的.
我也理解上下文和'this'的值(在stackoverflow的帮助之后),但我认为在这两种情况下我仍然会调用它作为方法,foo.bar()这意味着foo是上下文但它似乎都导致函数调用bar().
为什么会这样,这一切意味着什么?
var x = 10;
var foo = {
x: 20,
bar: function () {return this.x;}
};
(foo.bar = foo.bar)();//returns 10
(foo.bar, foo.bar)();//returns 10
Run Code Online (Sandbox Code Playgroud) 是否有人知道Dojo上出现的新书?我到目前为止检查过的所有书都有几年了.我听说作者正在等待1.7发布,因为1.6有很多变化.由于sitepen,网站上的文档和tutts变得越来越好,但我总是希望有一本好书可以在公共汽车上阅读.
在PHP调试方面,我是一个真正的新手,请原谅我的愚蠢.我有一个简单的html表单,提交到PHP脚本,我想调试该脚本,看看从表单发送什么.
我的Aptana安装了两个PHP解释器; 端口10001上的Zend Debugger和9000上的XDebug
我安装了Firefox Aptana Addon
我在以下网址上有我的HTML页面,在本地运行;
在IDE中,我打开PHP脚本并添加一些断点,然后打开latest.html,然后单击调试按钮.它在运行于的本地Web服务器中启动HTML页面;
http://127.0.0.1:8000/3i/latest.html
然后我填写表单然后提交调试器告诉我JS调试器已经终止但它不会停在我的断点处.
我有一个很好的阅读,我找不到任何有助于我的东西,这让我觉得这很容易,而且我有点傻.
在下面的代码示例中,成功回调函数将'input#04.update'记录四次而不是每个单独的输入,这有助于了解闭包是如何工作的,但我将如何使用它来定位每个单独的输入.
<input type="text" name="" id="01" class="update">
<input type="text" name="" id="02" class="update">
<input type="text" name="" id="03" class="update">
<input type="text" name="" id="04" class="update">
function updateFields(){
$('input.update').each(function(){
$this = $(this);
$.ajax({
data: 'id=' + this.id,
success: function(resp){
console.log($this);
$this.val(resp)
}
});
});
}
Run Code Online (Sandbox Code Playgroud) 事件处理程序和事件侦听器之间有什么区别?
直到最近,我认为它们是同一个东西的不同名称:在事件发生时调用的函数.但是我最近阅读了一些内容,它将事件处理程序称为事件监听器绑定的DOM元素,这是有意义的.
所以,我看到了一个例子,他们正在将一个angualar传递给ngRepeat并且工作正常.出于某种原因,当我设置此示例时,它不起作用.谁能告诉我为什么?如果您在没有延期的情况下分配数据,它可以正常工作,即$scope.objects = [{id:1}...]
非常感谢
Fiddle
<!doctype html>
<html ng-app="app">
<head>
</head>
<body>
<testlist/>
<script src="/lib/angular/angular.js"></script>
<script>
var app = angular.module('app', []);
app.factory('dataService', function ($q) {
return {
getData : function () {
var deferred = $q.defer();
setTimeout(function () {
deferred.resolve([{id:1},{id:2},{id:3},{id:4}]);
},0);
return deferred.promise;
}
};
});
app.directive('testlist', ['dataService', function(dataService) {
return {
restrict: 'E',
replace: true,
scope : {},
template: '<div ng-repeat="data in objects">{{inspect(data)}}{{data.id}}</div>',
controller: function($scope) {
$scope.objects = [{id:1},{id:2},{id:3},{id:4}];
$scope.inspect = function (obj) {
console.log(obj)
}
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个用户列表(确切地说是六个),其中包含'firstname','lastname'属性.进行提取时,下面的比较器按'firstname'对它们进行排序,它运行正常.
comparator : function (user) {
return user.get("firstname").toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)
但是如果我稍后尝试使用不同的值(即'lastname')对集合进行排序,则它不起作用.订单保持不变.
this.collection.sortBy(function(user) {
return user.get("lastname").toLowerCase();
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
更新
因此从sortBy IS返回的数据已经排序,但这对我来说并没有帮助,因为我的视图与集合相关联.如果我重置集合并将已排序的数组添加回集合,它的比较器就会完成它的工作,并将其排序回'firstname'顺序.
var sorted = this.collection.sortBy(function(user) {
return user.get("lastname").toLowerCase();
});
Run Code Online (Sandbox Code Playgroud) 我在Heroku中运行一个简单的测试站点时遇到了麻烦.出于某种原因,当我希望它从/ build /服务时,它正试图从/ app/build /提供内容.
错误:ENOENT:没有这样的文件或目录,stat'/app/build/index.html'
我在这里读到不要在快递应用程序中使用__dirname,因为Heroku将它设置为/ app并且我应该使用process.cwd();
process.env.PWD = process.cwd();
Run Code Online (Sandbox Code Playgroud)
但它没有用.下面是我的server.js表达app和文件夹结构
const path = require('path');
const express = require('express');
const port = process.env.PORT || 8080;
const app = express();
process.env.PWD = process.cwd();
app.use(express.static(process.env.PWD + '/build'));
app.get('*', function (req, res) {
const index = path.join(process.env.PWD, '/build/index.html');
res.sendFile(index);
});
app.listen(port);
console.log('server_started');
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我为什么'x'的最后一次记录等于0而不是1.我认为因为它在函数之外声明它具有全局范围然后在函数中它的值被设置为1并且该值将保持为它的全球?我知道函数内部的第一个'x'值是全局的,因为没有var关键字声明的任何变量都成为window对象的属性.非常感谢
var x = 0; //global variable
function y(){
x = 1;
log("1. %n ", x);//1. 1
var x = 2;
log("2. %n ", x);//2. 2
}
y();
log("3. %n ", x);//3. 0
Run Code Online (Sandbox Code Playgroud) javascript ×6
angularjs ×1
aptana ×1
backbone.js ×1
dojo ×1
events ×1
heroku ×1
jquery ×1
node.js ×1
php ×1