有人为我们建立一个应用程序,为我提供了代码,所以我可以通过它,我注意到这一点,起初看起来还不错,甚至很高兴让收集管理他的数据,但过了一段时间我开始考虑可能的陷阱在这个想法
所以:从它自己的初始化方法中获取集合的数据是一种好习惯.
例如:
var Book = Backbone.Model.extend({});
var Books = Backbone.Collection.extend({
url: '/books',
initialize: function(){
// do some logic here
// if collection is empty, fetch from server
if(this.size() == 0)
this.fetch();
}
});
Run Code Online (Sandbox Code Playgroud)
我问这个是因为我认为在下列情况下可能会出现问题:
假设我们在routeAction中:
books: function() {
var books = new Books();
var bookList = new BookList({ collection: books });
}
Run Code Online (Sandbox Code Playgroud)
是不是这种情况可能失败,如果获取速度比视图初始化速度快,视图会绑定到重置事件,重置会在视图初始化执行之前触发?
我错了,或者我应该提交一张票来解决这个问题.
我们的页面中有一个表格,最后有几行和一个自定义切换按钮.该表是通过页面中的html加载的,而不是通过json加载的.
现在,最后的togglebutton发布到服务并在数据库中设置该记录的跟随状态.
但是,它还应该更新该行中的另一个单元格.但是我确定我不应该通过jquery手动但通过数据表来做到这一点?
$('#tblFollow').dataTable({
sDom: "t",
aoColumns: [
null,
null,
null,
{ bSortable: false }
]
});
$('#tblFollow').on('click', 'a.follow', function(e){
$(this).toggleClass('active');
// updating column 'following' here...
// but this only changes visually, and not the inner datatables data used for sorting
var followingCell = $(this).parents('td').prev();
var txt = followingCell.text() == "1" ? "0" : "1";
followingCell.text(txt);
return false;
});
Run Code Online (Sandbox Code Playgroud)
手动示例: 现在我有一个示例,我手动更改字段,但这只是可视的,数据表仍然使用其内部数据进行排序.所以我正在寻找一种更好的方法
在骨干网中,我们有一个使用事件聚合器的应用程序,位于window.App.Events
现在,在许多视图中,我们绑定到该聚合器,我手动在视图上编写了一个destroy函数,该函数处理来自该事件聚合器的解除绑定,然后删除视图.(而不是直接删除视图).
现在,某些模型我们也需要这个功能,但我无法弄清楚如何解决它.
某些模型需要绑定到某些事件,但也许我错了,但如果我们从集合中删除一个模型,由于这些绑定到仍然存在的事件聚合器,它会保留在内存中.
模型上没有真正的删除功能,就像视图一样.那我怎么解决这个问题呢?
编辑 请求,一些代码示例.
App = {
Events: _.extend({}, Backbone.Events)
};
var User = Backbone.Model.extend({
initialize: function(){
_.bindAll(this, 'hide');
App.Events.bind('burglar-enters-the-building', this.hide);
},
hide: function(burglarName){
this.set({'isHidden': true});
console.warn("%s is hiding... because %s entered the house", this.get('name'), burglarName);
}
});
var Users = Backbone.Collection.extend({
model: User
});
var House = Backbone.Model.extend({
initialize: function(){
this.set({'inhabitants': new Users()});
},
evacuate: function(){
this.get('inhabitants').reset();
}
});
$(function(){
var myHouse = new House({});
myHouse.get('inhabitants').reset([{id: 1, name: 'John'}, {id: 1, name: 'Jane'}]);
console.log('currently living …Run Code Online (Sandbox Code Playgroud) 我正在尝试渲染一段html,在动态路由上可用,路由是通过$http.get()调用获取的,它返回一段html,
举一个例子,我尝试加载这个html部分:
<h1>{{ pagetitle }}</h1>
this is a simple page example
Run Code Online (Sandbox Code Playgroud)
我做了一个小小提琴,来模拟问题,但为了简单起见,我把http调出了,只是在范围内的字符串中添加了html.
控制器是:
function Ctrl($scope) {
$scope.data = {
view: "<h1>whaaaaa</h1>"
};
}
Run Code Online (Sandbox Code Playgroud)
页面html是这样的:
<div ng-app="">
<div ng-controller="Ctrl">
<div ng-include src="data.view"></div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
问题是它不会将字符串添加到html文件(ng-include)中,但是它会对由该字符串构成的URL进行http调用.
那么不可能只是在包含中输入一个字符串吗?如果没有,对动态URL进行http调用的正确方法是什么,并将返回的url输入到页面中.
你可以在JSFiddle中玩它.
我在settings.py和urls.py中取消注释了管理区域.但管理员不会加载/ admin /.如果我将网址更改为/ admin/auth /然后我可以登录管理面板,但如果我尝试转到/ admin /它仍然无法找到该页面.
这是我的settings.py:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
'src',
'lib.tagging',
'lib.markdown',
'lib.avatar',
# Uncomment the next line to enable admin documentation:
#'django.contrib.admindocs',
)
Run Code Online (Sandbox Code Playgroud)
URLs.py
from django.conf.urls.defaults import *
from django.conf import settings
from src import views
from src.models import Want
from lib.tagging.models import Tag
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
want_info_dict = {
'queryset': Want.objects.all(),
'date_field': 'pub_date',
}
urlpatterns = patterns('django.views.generic.simple',
url(r'^about/$', …Run Code Online (Sandbox Code Playgroud) 目前有一个小应用程序
'/login''/home''/dashboard'当用户登录后导航到主页时,我想向他显示登录主页.我试图给一个redirectUrl到$routeProvider.如果我返回一个空字符串,它会停留在页面上,如果它返回一个字符串,'/dashboard'那么它会重定向到仪表板.
问题是我无法检查用户是否已登录,在配置中的该功能.因为我不能把我注入UserService那里.
main.js
var myApp = angular.module('myApp', ['ngRoute', 'ngAnimate']);
myApp.config(['$routeProvider', '$locationProvider', function AppConfig($routeProvider, $locationProvider) {
$routeProvider.when(
// entry point, the main route of the app
'/', {
redirectTo: '/home'
}
)
.when(
// home page, entrypoint when a user is not logged in.
'/home', {
redirectTo: function redirectHome() {
// need to get the loggedInState here... preferably not on the window :p
return (window.isLoggedIn) ? …Run Code Online (Sandbox Code Playgroud) 我如何在模型的属性上添加内联编辑,
例如,当我有一个Player模型
var Player = Backbone.Model.extend({
defaults: {
id: 0,
name: '',
points: 0
},
initialize: function(){
// irrelevant stuff happening here...
},
rename: function(newName){
this.set({ name: newName });
}
});
Run Code Online (Sandbox Code Playgroud)
和一个playerRow观点
var PlayerRow = Backbone.View.extend({
tagName: 'li',
className: 'player',
events: {
'click span.score': 'score',
'blur input.name': 'rename',
'click div.playername': 'renderRename'
},
initialize: function(){
_.bindAll(this, 'render', 'rename');
this.model.bind('change', this.render);
},
render: function(){
var template = Tmpl.render("playerRow", { model : this.model });
$(this.el).html(template);
return this;
},
renderRename: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用jQuery DateTimePicker将我的日期从输入字段发布到我的ViewModel中的DateTime属性.我一直在解析1/01/0001 0:00:00.我们来看看我的viewmodel:
public class GameViewModel
{
[Display(Name = "Home team")]
public virtual String Home { get; set; }
[Display(Name = "Away team")]
public virtual String Away { get; set; }
[Display(Name = "Kickoff time")]
[DataType(DataType.DateTime)]
public virtual DateTime GameTime { get; set; }
[Display(Name = "Standard sharing on?")]
public virtual Boolean IsStandardSharing { get; set; }
//Hidden
public virtual Guid PeriodId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我输入字段的剃刀:
@Html.EditorFor(m => m.GameTime)
Run Code Online (Sandbox Code Playgroud)
最后是我的JavaScript
$('#GameTime').datetimepicker({
constrainInput: true,
firstDay: 1,
monthNames: ['Januari', 'Februari', …Run Code Online (Sandbox Code Playgroud) 使用Backbone.js我们有一个应用程序,在某些情况下我们需要向客户端webservice发送ajax帖子.
但是,要发布的内容是动态的,并且由某个数组决定.
对于数组中的每个项目,我们需要获取一段数据.
在汇总需要发送聚合对象的数据之后.
截至目前,我有一个同步方法,虽然我觉得这不是最好的方法.
var arrParams = [{id: 1, processed: false},{id: 7, processed: false},{id: 4, processed: false}];
function callback(data) {
$.post()... // jquery ajax to post the data... }
function fetchData(arr, data, callback) {
var currentId = _(arr).find(function(p){ return p.processed === false; }).id; // getting the ID of the first param that has processed on false...
// ajax call fetching the results for that parameter.
$.ajax({
url: 'http://mysuperwebservice.com',
type: 'GET',
dataType: 'json',
data: {id: currentId},
success: function(serviceData) {
data[currentId] …Run Code Online (Sandbox Code Playgroud) 我有一个DLL(由于许多原因)无法改变.我使用这个程序集来检索一个XPathNodeIterator.
我知道我可以用XML排序XPathExpression上XPathNavigator获得的XPathNodeIterator,问题是,我从一开始XPathNodeIterator就是有什么办法可以再应用排序?
我正在尝试将自定义404页面添加到umbraco中,即使我让它们在多个项目中工作,在这个umbraco 4.7中它也不起作用.
所以,我有什么,多个站点,每个都有几种语言.
我的umbracoSettings包含这个:
<errors>
<error404>
<errorPage culture="default">1842</errorPage>
<errorPage culture="en-GB">1842</errorPage>
<errorPage culture="nl-BE">1843</errorPage>
<errorPage culture="fr-BE">1844</errorPage>
</error404>
</errors>
Run Code Online (Sandbox Code Playgroud)
就像在其他项目中一样,虽然我一直在获取IIS 404页面.
所以,我尝试了本主题中的解决方案, passThrough和自定义解决方案似乎都不起作用
passThrough给出了:
未找到页面没有umbraco文档与网址" http://www.mysite.be/en/facebook " 匹配
umbraco尝试使用此xpath查询匹配它'/ domainprefixes-are-used-so-i-do-not-work')
通过添加umbraco文档的ID以在/config/umbracoSettings.config文件中显示为404页面,可以将此页面替换为自定义404页面.只需将id添加到'/ settings/content/errors/error404'元素即可.
有关更多信息,请访问umbraco网站上有关自定义404的信息.
和自定义给出了这个结果:
未找到页面没有umbraco文档与网址' http://solex.d01-win-dev.be/non-existing-page.aspx?404 ;http ://solex.d01-win-dev.be:80/匹配en/facebook '
umbraco尝试使用此xpath查询匹配它'/ domainprefixes-are-used-so-i-do-not-work')
通过添加umbraco文档的ID以在/config/umbracoSettings.config文件中显示为404页面,可以将此页面替换为自定义404页面.只需将id添加到'/ settings/content/errors/error404'元素即可.
有关更多信息,请访问umbraco网站上有关自定义404的信息.
它看起来好像他没有走向umbracoSettings来获取我的error404映射.在4.7中你做了一些改变,你需要通过web.config键激活自定义错误页面?
我听过很多关于backbone.js的内容,坦白说我不明白它的概念.它是否需要所有元素都在单页中才能使用其动画和效果?或者它可以从服务器中获取项目并通过转换加载它,或者我指的是不同的页面,但看起来像一个页面.我不太了解它的概念,所以这就是我要问的原因.我正在寻找的是将骨干或任何其他javascript框架与rails项目结合使用,这可以提供一些跨页面的轻松转换,并且可以提供本机应用程序外观.
在websql中,我们可以像这样请求某一行:
tx.executeSql('SELECT * FROM tblSettings where id = ?', [id], function(tx, rs){
// do stuff with the resultset.
},
function errorHandler(tx, e){
// do something upon error.
console.warn('SQL Error: ', e);
});
Run Code Online (Sandbox Code Playgroud)
但是,我知道常规的SQL,并认为我应该能够请求
var arr = [1, 2, 3];
tx.executeSql('SELECT * FROM tblSettings where id in (?)', [arr], function(tx, rs){
// do stuff with the resultset.
},
function errorHandler(tx, e){
// do something upon error.
console.warn('SQL Error: ', e);
});
Run Code Online (Sandbox Code Playgroud)
但这没有给我们任何结果,结果总是空的.如果我将删除[arr]入arr,然后sql将获得可变数量的参数,所以我认为它应该是[arr].否则它将要求我们添加动态数量的问号(与数组中的id一样多).
那么有谁能看到我做错了什么?
backbone.js ×5
javascript ×5
angularjs ×2
c# ×2
jquery ×2
asynchronous ×1
datatables ×1
django ×1
django-admin ×1
django-views ×1
events ×1
frameworks ×1
jquery-ui ×1
ruby ×1
sorting ×1
sql ×1
sqlite ×1
umbraco ×1
web-sql ×1
xml ×1
xpath ×1