javascript

git

python

java

git-remote

github

django

c#

reactjs

c++

validation

email-validation

undefined

scrum

kubernetes

ruby-on-rails

.net

.net-framework-version

operators

git-fetch

javascript-Backbone.js-在哪里存储状态信息?

我是Backbone.js的新手,我试图弄清楚状态变量应该存放在哪里。 我的用例:

我有一个为书提供阅读界面的应用程序(我知道,经典示例,对吧?)。 我的模型是Bookapp.State,每个模型都有一个收集类。 该应用程序的结构大致如下所示(原谅ASCII visio):

+------------+
| Controller |
+------------+
    |      Views                 Models
    | +--------------+      +----------------+
    |-|  IndexView   |------| BookCollection |
    | +--------------+      +----------------+
    |                               |
    | +--------------+      +----------------+
    +-|   BookView   |------|     Book       |
      +--------------+      +----------------+
       |                            |
       | +--------------+           |
       |-|  TitleView   |-+         |
       | +--------------+ | +----------------+
       |                  +-|     Page       |
       | +--------------+ | +----------------+ 
       +-|   PageView   |-+
         +--------------+ 

也就是说,app.State实例化并协调由模型支持的两个视图User selects "Show Images" --> View event listener is called --> View updatesBookViewBookView实例化并协调一组子视图(实际上比此处显示的更多)。

状态信息包括:

  • 当前书籍(指针或ID)
  • 当前页面(指针或ID)
  • 其他UI状态变量,例如页面上的图像是否可见,其他小部件是打开还是关闭等。

我的问题是,该状态信息应该存放在哪里? 可能的选项包括:

  • 这些模型可以是状态感知的。 这是有道理的,因为它们旨在存储数据,并且视图可以侦听状态变化,但是这似乎并不符合预期的Backbone.js模式,而且并不总是很有意义(例如,在 app.State应该适用于所有页面,而不仅仅是当前页面)

  • 一种特殊的单例模型,用于保存状态信息。 再次讲得通,易于听取,所有视图都可以绑定到它-再次,这似乎超出了标准MVC。

  • 负责UI状态的视图-但这需要视图彼此了解才能获取状态信息,这似乎是不正确的

  • 控制器应该在状态之间路由应用程序-这是有道理的,但是它意味着来回有点奇怪,例如 app.State(而不是更简单的User selects "Show Images" --> View event listener is called --> View updates

我想从某些方面来说这是一个通用的MVC问题,但是我很难理解。 应用程序的哪一部分应负责保存当前状态?

更新:为了将来参考,我针对此问题使用了全局单例状态模型。 UI流程如下所示:

  1. View UI处理程序仅执行更新app.State
  2. 我的路由器除了更新app.State之外也什么都不做-本质上是显示和响应URL更改的专业视图
  3. 视图在app.State上侦听更改并进行相应更新

我的应用程序是开源的-您可以在Github上查看代码。 这里相关的部分是状态模型,我已经对其进行扩展以处理URL的(反)序列化状态。

trans by 2020-08-04T20:56:32Z

javascript-Backbone.js能够进行休息和本地存储吗?

我一直在尝试使用Backbone.js([https://github.com/jeromegn/Backbone.localStorage)的localstorage模块。]据我了解,这会使Backbone.sync重载,因此阻止了将主干网推送到服务器(? )。 理想情况下,我也希望将数据也传递回服务器,并在联机时将其持久化到本地,而在脱机时仅使用localstorage(您知道这是完美的应用程序)。 我还没有找到任何文档。

Backbone.localStorage是否是其中的一部分?有没有人能够建立这种情况?怎么做? (请告诉我,我不必自己动手。)

谢谢。

trans by 2020-08-02T01:30:21Z

javascript-同步时排除模型属性(Backbone.js)

同步时,是否可以从模型中排除某些属性?

例如,我保留有关某些视图状态的模型信息。 假设我有一个选择器模块,而这个模块只是在模型上切换selected属性。 稍后,当我在集合上调用.save()时,我想忽略selected的值,并将其从与服务器的同步中排除。

有没有这样做的干净方法?

(让我知道您是否需要更多详细信息)

trans by 2020-07-26T15:06:23Z

javascript-Backbone.js收集选项

我已经使用Backbone.js编写了模型/视图/集合。 我的收藏使用fetch方法从远程服务器加载模型。 此集合所需的url需要一个id,例如:messages / {id}。 但是我发现没有干净的方法可以将选项传递给Collection。

主干.js视图通过将其传递给构造视图([options])来接受选项,但是集合期望在构造时收集一系列模型:collection([models])。

将参数/选项传递到此集合的“最干净”方法是什么?

缩短代码:

var Messages = Backbone.Collection.extend({
 model: Message,
   url: 'http://url/messages/' + id
});
trans by 2020-07-19T17:20:23Z

node.js-错误:g的nodejs中的getaddrinfo ENOTFOUND

我正在节点上运行Web服务器,其代码如下

var restify = require('restify');

var server = restify.createServer();

var quotes = [
  { author : 'Audrey Hepburn', text : "Nothing is impossible, the word itself says 'I'm possible'!"},
  { author : 'Walt Disney', text : "You may not realize it when it happens, but a kick in the teeth may be the best thing in the world for you"},
  { author : 'Unknown', text : "Even the greatest was once a beginner. Don't be afraid to take that first step."},
  { author : 'Neale Donald Walsch', text : "You are afraid to die, and you're afraid to live. What a way to exist."}
];

server.get('/', function(req, res) {
  res.json(quotes);
});

server.get('/quote/random', function(req, res) {
  var id = Math.floor(Math.random() * quotes.length);
  var q = quotes[id];
  res.json(q);
});

server.get('/quote/:id', function(req, res) {
  if(quotes.length <= req.params.id || req.params.id < 0) {
    res.statusCode = 404;
    return res.send('Error 404: No quote found');
  }

  var q = quotes[req.params.id];
  res.json(q);
});

server.listen(process.env.PORT || 3011);

然后我想在以下代码中进行获取请求

var https = require('http');

/**
 * HOW TO Make an HTTP Call - GET
 */
// options for GET
var optionsget = {
    host : 'http://localhost',
    port : 3010,
    path : '/quote/random', // the rest of the url with parameters if needed
    method : 'GET' // do GET
};

console.info('Options prepared:');
console.info(optionsget);
console.info('Do the GET call');

// do the GET request
var reqGet = https.request(optionsget, function(res) {
    console.log("statusCode: ", res.statusCode);
    // uncomment it for header details
//  console.log("headers: ", res.headers);


    res.on('data', function(d) {
        console.info('GET result:\n');
        process.stdout.write(d);
        console.info('\n\nCall completed');
    });

});

reqGet.end();
reqGet.on('error', function(e) {
    console.error(e);
});

我只是从节点开始,我什至不知道这是否是正确的方法。我想测试express和restify的性能。我对我编写的服务器代码进行了apache基准测试,发现矛盾的结果是restify更好。所以我想通过调用远程服务来进行更多测试 读写到mongodb。上面的代码是我的起点。我遇到了错误

{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }

我是否至少朝写方向前进? 我要进行哪种测试的正确方法是什么? 为什么我得到的结果重新调整的速度快于表达? 谁能指导我找到在node / express / backbone和mongodb中应用的最佳入门教程?

trans by 2020-07-11T17:00:35Z

Javascript-主干JS:一个视图可以触发其他视图的更新吗?

在我的简单项目中,我有2个视图-订单项视图(品牌)和应用程序。 我附有允许选择多个项目的功能:

var BrandView = Backbone.View.extend({
...some code...
    toggle_select: function() {
        this.model.selected = !this.model.selected;
        if(this.model.selected) $(this.el).addClass('selected');
        else $(this.el).removeClass('selected');
        return this;
    }
});

var AppView = Backbone.View.extend({
...some code...
    delete_selected: function() {
        _.each(Brands.selected(), function(model){ 
            model.delete_selected();
        });
        return false;
    },
});

问题是,我想知道选择了多少个项目。 在此设置中,选择不会影响模型,因此不会触发任何事件。 从MVC概念中,我了解到视图不应与其他视图直接对话。 那么AppView如何知道BrandViews中正在选择某些内容?

更具体地说,我通过AppView知道选择了多少个项目,因此,如果选择了多个项目,则会显示一个用于多项选择的菜单。

trans by 2020-07-11T15:09:53Z

javascript-BackboneJs中的多个路由器与单个路由器

我见过的Backbone上的所有示例在整个应用程序中都使用一个路由器,但是为应用程序的每个部分(页眉,页脚,舞台,边栏)都配备一个路由器不是很有意义吗? 有没有人使用不止一个路由器构建应用程序,您的经验是什么?

让我们考虑一个带有嵌套视图的复杂应用程序:一个视图拥有自己的处理子视图显示的路由器,而不是拥有一个必须通知主视图以更改其子视图的大型路由器,这会更好吗?

这个问题的背景:我已经看到骨干网中的路由器与GWT中的ActivityMapper有很多相似之处。 ActivityMapper仅负责为DOM中的给定路线和给定容器获取合适的演示者。

trans by 2020-07-09T04:00:43Z

javascript-将jQuery UI Sortable的顺序保存到Backbone.js集合

我有一个Backbone.js集合,我希望能够使用jQuery UI的Sortable进行排序。 没什么,我只想列出一个列表。

问题是我不知道如何在排序后获取当前的项目顺序并将其传达给集合。 Sortable可以序列化自身,但是不会给我提供需要提供给集合的模型数据。

理想情况下,我希望能够仅获取集合中模型的当前顺序的数组,并对集合使用reset方法,但是我不确定如何获取当前顺序。 请分享任何想法或示例,以获取当前模型订单的数组。

trans by 2020-07-06T01:57:04Z

Backbone.js控制器中的默认路由?

我想为我的ribs.js控制器设置默认路由。 目前我这样做:

class DealSearchController extends Backbone.Controller
    routes:
        'list' : 'showListView'
        'photos' : 'showPhotoView'
        'map' : 'showMapView'

    initialize: ->
        ....        
            window.location.hash = 'list' if ! _.include( _.keys(@routes),(window.location.hash || '').replace('#',''))

有更好的方法吗?

trans by 2020-07-04T06:28:28Z

Rails-如何向使用JavaScript创建的表单添加CSRF保护?

我正在使用bone.js,效果很好。 但是我作为javascript模板创建的表单缺少rails csrf保护令牌。 如何将其添加到我在javascript中创建的模板中?

trans by 2020-07-02T01:48:34Z

bone.js解决什么问题?

当我检查了ribs.js网站时,我不确定它打算做什么。

似乎有些流行,但是为什么我要学习呢? 对我有什么用? 为什么做的? 它解决什么问题?

trans by 2020-06-27T02:21:35Z

javascript-Backbone.js-id vs idAttribute vs cid

我已经研究Backbone.js数周了,使用带有模型,路由器和集合的视图感到很舒服。

我仍然有一些差距:

  1. defaultsaddNewModelidAttribute之间的连接是什么? 它们如何相互影响?

  2. 新模型何时确切获得其ID? 服务器负责分配它吗? 我是否需要将其添加到模型的defaults中(可能是功能)? 也许addNewModel函数应该这样做?

trans by 2020-06-24T14:50:34Z

尝试从Django中的POST解析`request.body`

这个问题已经在这里有了答案:

  • 在Django中以字符串形式获取请求正文 3个答案

由于某些原因,我无法弄清楚Django为什么不能正确处理我的json = json.loads(request.body)内容。

它以json = json.loads(request.body)格式发送,在Dev Tools中查看json选项卡将其显示为请求有效负载:

{creator: "creatorname", content: "postcontent", date: "04/21/2015"}

这正是我希望将其发送到我的API的方式。

在Django中,我有一个接受此请求作为参数的视图,仅出于测试目的,应在控制台上打印json = json.loads(request.body)

当然,什么都没有打印出来,但是当我打印json = json.loads(request.body)时,我得到了:

b'{"creator":"creatorname","content":"postcontent","date":"04/21/2015"}'

所以我知道我确实有尸体被寄出。

我尝试使用json = json.loads(request.body)也无济于事。 设置该变量后打印json也不会返回任何内容。

trans by 2020-06-23T07:13:51Z

模板-是否可以在带有工具栏的选项哈希中嵌套帮助程序?

例如,是否可以将我的“ i18n”帮助程序嵌套在另一个帮助程序的哈希变量中?

{{view "SearchView" placeholder="{{t 'search.root'}}" ref="search" url="/pages/search" className='home-search'  polyfill=true}}
trans by 2020-06-21T16:41:10Z

JavaScript-没有哈希的骨干网路由?

我正在为当前项目使用主干。 我想知道是否可以像davis.js一样在没有哈希#的情况下进行路由。

谢谢!

trans by 2020-06-20T19:27:57Z

JavaScript-为什么下划线会推迟解决很多问题?

在使用骨干几个星期后,我意识到下划线延迟最终解决了我在渲染各种视图时遇到的许多异步问题。有人可以帮我确切地理解下划线延迟的作用以及$ .ready()或其他类型的等待dom渲染函数的区别。 使用它的不利之处是什么?

_.defer = function(func) {
    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
};
trans by 2020-06-19T10:57:56Z

javascript-最简单的骨干.js示例

我正在创建一个简单的骨架示例来尝试学习它,并且在使我的视图呈现时遇到问题。 我以Thomas Davis的教程为基础,但查看了许多其他可用的应用程序和教程。

我要更改Davis的教程,不仅因为我想添加输入框,而且因为基于主干文档,我认为它需要的代码更少,结构也有所不同。 显然,因为我无法使它正常工作,所以我不知道需要什么,不需要什么。

我的最终目标是在ul#friends-list内的li标签中添加名称,尽管我认为el: 'body'不会对我有所帮助。

我究竟做错了什么? 谢谢你的帮助。

我的html:

<!DOCTYPE HTML>
<html>
<head>
<title>Tut</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js"></script>
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>
</head>
<body>

<input type="text" placeholder="Enter friend's name" id="input" />
<button id="add-input">Add Friend</button>

<ul id="friends-list">
</ul>
<script type="text/javascript" src="test.js"></script>
</body>
</html>

我的test.js

$(function() {

Friend = Backbone.Model.extend();
//Create my model

var friends = new Friend([ {name: 'Eddard Stark'}, {name: 'Robert Baratheon'} ]);
//Create new models to be used as examples


FriendList = Backbone.Collection.extend({
    model: Friend
});
//Create my collection

var friendslist = new FriendList;
//Created to hold my friends model


FriendView = Backbone.View.extend({

    tagName: 'li',

    events: {
        'click #add-input':  'getFriend',
    },

    initialize: function() {
        _.bindAll(this, 'render');
    }, 

    getFriend: function() {
        var friend_name = $('#input').val();
        var friend_model = new Friend({name: friend_name});
    },

    render: function() {
        console.log('rendered')
    },

});

var view = new FriendView({el: 'body'});
});
trans by 2020-02-23T02:36:01Z

javascript-如何根据ID以外的某些属性从集合中查找模型?

我有一个带有多个对象的模型:

//Model
Friend = Backbone.Model.extend({
    //Create a model to hold friend attribute
    name: null,
}); 

//objects
var f1 = new Friend({ name: "Lee" });
var f2 = new Friend({ name: "David"});
var f3 = new Friend({ name: "Lynn"});

并且,我将这些朋友对象添加到集合中:

//Collection
Friends = Backbone.Collection.extend({
    model: Friend,
});

Friends.add(f1);
Friends.add(f2);
Friends.add(f3);

现在我想根据朋友的名字来建立模型。 我知道我可以添加ID属性来实现此目的。 但是我认为应该有一些更简单的方法来做到这一点。

trans by 2020-02-20T07:00:01Z

underscore.js-为什么bindAll.js视图中的bindAll?

在骨干网的todo演示中,代码中有一些使用_.bindAll(this,...)的地方。 具体来说,两个视图的initialize函数都使用了它。 据我所知,有必要执行以下操作:

this.$('.todo-content').text(content);

但是,当一个人可以做到时,为什么要做上面的事情:

$('.todo-content').text(content);

trans by 2020-02-17T02:06:58Z

javascript-集合的Backbone.js集合

我试图弄清楚如何使用骨干.js进行集合的集合。 我刚接触骨干。 我遇到以下情况:

 +---------------+               +------------------+
 | Playlists     |               | Playlist         |
 |---------------|          0..* |------------------|
 |               +-------------->| Name             |
 |               |               |                  |
 |               |               |                  |
 +---------------+               +-------+----------+
                                         |
                                         |
                                         |0..*
                                         v
                                 +------------------+
                                 |  Track           |
                                 |------------------|
                                 | Name             |
                                 | Artist           |
                                 |                  |
                                 +------------------+

在代码中,该代码类似于以下内容:

var trackModel = Backbone.Model.extend({
    //trackdata
});

var playlistModel = Backbone.Collection.extend({
    model : trackModel,
    url   : "playlist"
});

var playlistsModel = Backbone.Collection.extend({
    url   : "playlists",
    model : playlistModel   //This pretty sure doesn't work like I want, because there is no model attribute for collections :S
});

但是我总是在js控制台中收到一个错误,说:

 Uncaught TypeError: Object [object Object] has no method '_validate'

当我尝试执行触发验证的功能时(例如添加,提取等)

如果我将validate_validate函数添加到任何集合或模型中,都没有区别。

我相信这是因为ribs.js不支持集合中的集合。 还有另一种可行的方法吗?

更新:

这就是现在的样子

var Track = Backbone.Model.extend({ 
    //trackdata 
}); 

var Tracks = Backbone.Collection.extend({ 
    model:Track; 
}); 

var Playlist = Backbone.Model.extend({ 
    //name  : ...
    tracks: new Tracks ()
}); 

var Playlists = Backbone.Collection.extend({ 
    url : "playlists", 
    model : Playlist 
});
trans by 2020-02-09T11:06:37Z

1 2 3 4 5 下一页 共5页