小编Ing*_*gro的帖子

Backbone Marionette:templateHelpers和itemViewOptions

我有Backbone Marionette和ItemView渲染的问题.我需要将Composite视图中的值传递给每个Item View.该值在项视图的options数组中正确包含,但是,我无法从templateHelpers方法访问它.

所以我尝试将其设置为我的View的值,但是当我渲染数组时,它返回一个"未定义"值.

复合视图

var TableView = Backbone.Marionette.CompositeView.extend({
....
    itemViewOptions: {
        foo: "bar",
    },
Run Code Online (Sandbox Code Playgroud)

物品视图

var RowView = Backbone.Marionette.ItemView.extend({

template: RowTemplate,
tagName: "tr",
foo: "",

initialize: function(){

    this.foo = this.options.foo;              
},

templateHelpers: {  

     foo: function(){
         return this.foo;
     }

},
Run Code Online (Sandbox Code Playgroud)

我做错了什么?如何访问该值并将其提取到模板?谢谢.

backbone.js marionette

11
推荐指数
2
解决办法
1万
查看次数

敲除"if"绑定不能与可排序列表中的表达式一起使用?

我只是遇到了使用Knockout和Knockout-sortable插件制作的To-do-like sortable列表的另一个问题.

我需要在当前时间放置的元素下放置一个红色分隔符,如果在该分隔符之前删除了一个元素,则取消排序.

我尝试使用"可见"绑定并且它以某种方式工作,但是visibile绑定只是隐藏了DOM元素,它搞乱了可排序的arrayIndex,为它添加了不必要的元素.

<div class="delimiter" data-bind="visible: time() == $root.limit()"></div>
Run Code Online (Sandbox Code Playgroud)

"if"绑定会更好,因为它只在必要时插入DOM元素,但我用于visible的表达式总是被评估为true,我无法弄清楚为什么......

<div class="delimiter" data-bind="if: time() == $root.limit()"></div>
Run Code Online (Sandbox Code Playgroud)

这是小提琴:http://jsfiddle.net/ingro/VaqqF/

任何帮助表示赞赏,谢谢!

knockout.js knockout-sortable

7
推荐指数
1
解决办法
1万
查看次数

无法与Laravel 4共享子域名会话

我正在尝试在具有许多子域的主机上使用Laravel.只有一个子菜单会运行Laravel的应用程序,但我想通过PHP本机会话分享一些东西(比如当前用户).

我编辑了Laravel的会话配置以使用子域,更改域值:

'cookie' => 'mydomain_session',
'domain' => '.mydomain.com',
Run Code Online (Sandbox Code Playgroud)

在Laravel未运行的另一个子域中,我正在尝试以这种方式访问​​会话:

session_name("mydomain_session");
session_set_cookie_params(0,'/','.mydomain.com',false,true);
session_start();
Run Code Online (Sandbox Code Playgroud)

但它不起作用,如果我尝试回显$ _SESSION变量是空的.

最奇怪的是,如果我尝试回显session_id(),它们在两个子域中都是相同的.

此外,如果我在第三个子域中设置相同的脚本,它与其他非laravel子域共享会话没有问题.

那么我做错了什么?我错过了一些东西,或者Laravel没有以普通方式管理本机PHP会话?

任何帮助表示赞赏!

php subdomain session laravel

7
推荐指数
1
解决办法
2158
查看次数

Backbone Sync返回一个空的$ _POST数组

我正在尝试使用Backbone和Yii Framework完成我的第一个RESTful应用程序.我对GET方法没有任何问题,但是我现在卡在POST方法中,以创建一个新元素.

我在Backbone中有一个评论模型:

var commentModel = Backbone.Model.extend({

    urlRoot: "index.php/api/comments",
    idAttribute: 'id',

    defaults: {
        content: "Empty comment",
        status: 1
    }
});
Run Code Online (Sandbox Code Playgroud)

在我看来,我添加了一个函数来创建一个新的Comment传递相对形式的值:

on_submit: function(e) {
            var new_comment = new Comment({author_id: this.$('#author_text').val(), content: this.$('#content_text').val(), post_id: this.$("#post_text").val(), status: this.$("#status_text").val()});

         new_comment.save();
        },
Run Code Online (Sandbox Code Playgroud)

用Firebug查看请求似乎没问题,在POST选项卡中我可以看到所有值:

JSON            
author_id "7"   
content "Epic fail"
post_id "7" 
status "2"

Source 
{"content":"Epic fail","status":"2","author_id":"7","post_id":"7"}
Run Code Online (Sandbox Code Playgroud)

但是在我的php Api中,$ _POST var是空的!

foreach($_POST as $var=>$value) {

     if($model->hasAttribute($var))
        $model->$var = $value;
     else
        $this->_sendResponse(500);
}
Run Code Online (Sandbox Code Playgroud)

有人有想法吗?阅读Backbone.Sync的文档我明白它应该使用POST来创建请求.

我找到了一个解决方法来获取以下值:

file_get_contents('php://input') 
Run Code Online (Sandbox Code Playgroud)

但是对我来说身份不合适......

谢谢.

javascript php rest yii backbone.js

5
推荐指数
1
解决办法
1751
查看次数

Backbone:在视图上限制集合过滤器事件

在我的应用程序中,我有一个视图显示为一个表,其中包含从服务器获取的集合.我希望用户能够过滤此集合,在文本框中编写搜索字符串.

问题是每次击键都会触发keyup事件,我想避免这种情况,以免使用无用的请求使服务器过载.所以我想使用下划线的油门功能,但我不能以一种有效的方式实现它.

events: {
    'keyup #filter' : 'filter_collection'
}

filter_collection: function(e) {
    var el, throttled, value;

    el = e.currentTarget;
    value = $(el).val();
    this.collection.server_api.filter = value;
    throttled = _.throttle(_.bind(this.update_collection, this), 5000);
    throttled();
}

update_collection: function() {
    var promise, self;

    self = this;
    promise = this.collection.fetch();
    $.when(promise).then(function() {
      self.collection.pager();
    });
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,每次击键都会调用update_collection函数,就像之前没有那样throttle.我也试过了,debounce但所有的请求都会在等待时间之后发出.我错过了什么?

任何帮助表示赞赏,谢谢!

ajax backbone.js underscore.js

4
推荐指数
1
解决办法
1776
查看次数

Laravel 4:在自定义类中使用Facade

我正在使用Laravel 4开发一个应用程序,我有一个问题,我想在完全提交之前被问到.

我已经创建了一些自定义类和外观,这些类和外观已成功添加到laravel的配置文件中.

例如:

namespace Helpers;

class Ftp {

    public function connect($data)
    {
        // Do something
    }

}
Run Code Online (Sandbox Code Playgroud)

我实际上正在使用php的use语句来访问外墙,就像我在Laravel中常见的那样:

namespace Helpers;

use Illuminate\Support\Facades\File;

class Ftp {

    public function Connect($data)
    {
        $file = File::get('text.txt');
            ...
    }

}
Run Code Online (Sandbox Code Playgroud)

现在在自定义类中使用laravel外观的正确方法是什么?我觉得这不是一个好的选择,特别是考虑可测试性.任何建议表示赞赏!

php class facade laravel

4
推荐指数
1
解决办法
1891
查看次数

json_encode在windows上返回整数值,在linux上返回字符串

我最近出现了这个奇怪的问题.我目前正在Windows环境中进行开发,而在Linux服务器上进行部署时,我知道这并不理想,但在此阶段我无法做很多事情.

我所做的只是从数据库获取数据,然后返回结果数组的JSON响应,但结果不同导致我的前端应用程序出现问题.

我在Windows上得到这个:

{
    "id":40,
    "name":"test"
}
Run Code Online (Sandbox Code Playgroud)

这在Linux上:

{
     "id":"40",
     "name":"test"
}
Run Code Online (Sandbox Code Playgroud)

我实际上使用的是Laravel框架,所以语法就是这样:

$user = User::find($id);
return Response::json($user->toArray());
Run Code Online (Sandbox Code Playgroud)

幕后背后是这样做的:

$this->data = json_encode($data);
Run Code Online (Sandbox Code Playgroud)

所以不幸的是我没有钩子在哪里设置JSON_NUMERIC_CHECK选项.

在重构我的代码之前,有没有办法强制JSON_NUMERIC_CHECK所有json_encode调用?我正在使用相同的数据库来获取数据,所以我猜它可能是一个与平台相关的问题?

编辑:

进一步的调查使我认为有罪可能是数据库驱动程序.如果我在Windows上转储数据我得到这个:

 array
      'id' => int 40
      'name' => string 'test' (length=4)
Run Code Online (Sandbox Code Playgroud)

在Linux上它是:

array
     'id' => string '40' (length=2)
     'name' => string 'test' (length=4)
Run Code Online (Sandbox Code Playgroud)

php json laravel

4
推荐指数
1
解决办法
1287
查看次数

在Electron应用程序上处理Squirrel的活动

这些天我和Electron一起玩,为Windows构建一个小型原生应用程序,我正在使用Grunt Electron Installer为我的应用程序创建一个安装程序.

安装程序已成功创建,但我不知道如何在我的应用程序中处理Squirrel的事件,如我在我的应用程序的入口点添加此文档中所述:

var handleStartupEvent = function() {
    if (process.platform !== 'win32') {
        return false;
    }

    var squirrelCommand = process.argv[1];
    switch (squirrelCommand) {
        case '--squirrel-install':
        case '--squirrel-updated':

            // Optionally do things such as:
            //
            // - Install desktop and start menu shortcuts
            // - Add your .exe to the PATH
            // - Write to the registry for things like file associations and
            //   explorer context menus

            // Always quit when done
            app.quit();

            return true;
        case …
Run Code Online (Sandbox Code Playgroud)

windows installer node.js electron

4
推荐指数
1
解决办法
3947
查看次数

从PHP渲染React组件

我正在使用ReactJS为一个简单的可过滤项目列表提供支持,它可以很好地满足我的需求.

问题是我需要在服务器上呈现标记以获取SEO原因,但是当我调用React.renderComponent()它时,用React生成的标记替换现有标记.

在React的文档中搜索我发现了这个注释:

React.renderComponent()替换您传入的容器节点的内容.将来,可以将组件插入现有DOM节点而不覆盖现有子节点.

而且我不能React.renderComponentToString()用来生成标记服务器端,因为我的后端在PHP上运行...

是否有任何(即使是hackish)方式来实现当前版本(0.11.2)?

我想如果使用renderComponentToString()生成的标记可以实现,那么应该有一种模拟结果的方法吗?

谢谢你的建议!

javascript php client-side reactjs

3
推荐指数
2
解决办法
7074
查看次数

EaselJS:在鼠标单击时更改形状填充颜色

我在与EaselJS合作时遇到了困难.基本上我想创建一个简单的网格并突出显示所选的实际元素:

var stageWidth = 800,
   stageHeight = 600,
   cell_size = 50,
   w = 16,
   h = 12,
   n = w * h,
   canvas,
   stage,
   background;

$(document).ready(function(){

            canvas = $("#container")[0];     
            stage = new createjs.Stage(canvas);

            var x_pos = 0,
                y_pos = 0,
                res = 0,
                grid_el;

            for(i=0;i<n;i++){

                res = i%w;

                if(i>0){
                    if(res===0){
                        x_pos = 0;
                        y_pos++;
                    } else {
                        x_pos++;
                    }
                }

                grid_el = new createjs.Shape();
                grid_el.graphics.setStrokeStyle(2,"square").beginStroke("#000000");
                grid_el.graphics.beginFill("#70FF85");
                grid_el.graphics.rect(x_pos * cell_size,y_pos * cell_size,cell_size,cell_size);
                grid_el.x_pos = x_pos * cell_size;
                grid_el.y_pos = y_pos * …
Run Code Online (Sandbox Code Playgroud)

canvas html5-canvas easeljs

2
推荐指数
1
解决办法
2万
查看次数

Requirejs,Backbone和安全性

我实际上正在为我的公司开发一个单页应用程序,它涉及不同用户角色的不同视图,以防止没有足够权限的人访问他们不应该看到的数据,或者执行他们无权执行的功能.

我在后端使用PHP和REST API,所以我觉得我在那里相当安全,但我对客户端安全性一无所知.

我正在考虑在我的main.js中以这种方式存储具有当前用户角色的App变量:

require(['jquery',
    'underscore',
    'backbone',
    'marionette',
    'app',
    'routers/adminRouter',
    'routers/userRouter',
    ], function($, _, Backbone, Marionette, App, AdminRouter, UserRouter){

App.vent.on("routing:started", function(){
    Backbone.history.start();
});

App.addInitializer(function(){
    if(userRole==="admin"){
        App.Router = new AdminRouter;
    } else {
        App.Router = new UserRouter;
    }
    App.vent.trigger("routing:started");
});

App.addRegions({
   content: "#main",
   page: "#page",
   dialogs: "#dialogs"
});

App.start();

App.vars = {};

App.vars.userRole = userRole;
Run Code Online (Sandbox Code Playgroud)

App.js只是:

define([
   'underscore',
   'backbone',
   'marionette'
   ], function(_, Backbone){

       var App = new Backbone.Marionette.Application();
       return App;
});
Run Code Online (Sandbox Code Playgroud)

变量userRole只是一个全局变量,我在index.php页面上从我的服务器引导.这安全多少钱?有一种方法可以改变userRole页面加载的价值吗?或者App.vars.userRole在应用程序运行时进行更改?我无法App从控制台访问变量,但正如我所说,我对客户端编程非常新,我必须知道我是否可以依赖该变量的值.处理这种情况的最佳方法是什么?先感谢您.

javascript security requirejs backbone.js

1
推荐指数
1
解决办法
1161
查看次数

Laravel 4:如何在雄辩的模型中注入另一个类

我正在尝试使用内置的laravel的Ioc容器在Page模型中注入一个PageManager类,我有点迷失.

我想要实现的是这样的:

class Pages extends Eloquent {

    public function __construct(PagesManagerInterface $manager, array $attributes = array()) 
    {
        parent::__construct($attributes);
        $this->manager = new $manager;
    }

    public function saveToDisk()
    {
         $this->manager->writeToFile();
    }
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误:

ErrorException:传递给Pages :: __ construct()的参数1必须是PagesManagerInterface的实例,没有给出.

我试着在app/start/global.php中添加它:

App::bind('Pages',function(){

    return new Pages(new PagesManager);
});
Run Code Online (Sandbox Code Playgroud)

但似乎被框架忽略了,而且我也不知道如何将$ attribute数组插入到这个声明中.

我有点失落所以感谢任何帮助!

dependency-injection ioc-container inversion-of-control laravel

1
推荐指数
1
解决办法
3445
查看次数