Javascript 如何将雄辩的模型传递给Knockout.js视图模型构造函数?
我有一个解决方案(见下文),但它既尴尬又笨拙&我想听听其他人是如何解决这个问题的 下面是一个简单的例子来说明这个问题: 假设我有一个雄辩的Javascript 如何将雄辩的模型传递给Knockout.js视图模型构造函数?,javascript,laravel,knockout.js,eloquent,Javascript,Laravel,Knockout.js,Eloquent,我有一个解决方案(见下文),但它既尴尬又笨拙&我想听听其他人是如何解决这个问题的 下面是一个简单的例子来说明这个问题: 假设我有一个雄辩的用户模型,我正在创建一个“编辑用户”页面,用于处理值到DOM元素的绑定 在本页的控制器方法中,我执行以下操作: public function getEditUser($id = null) { return View::make("account.edituser") ->with("user", User::find($id)
用户
模型,我正在创建一个“编辑用户”页面,用于处理值到DOM元素的绑定
在本页的控制器方法中,我执行以下操作:
public function getEditUser($id = null)
{
return View::make("account.edituser")
->with("user", User::find($id))
->with("groups", Group::all());
}
var createUserViewModel = function (user, groups) {
return {
id: ko.observable(user.id),
name: ko.observable(user.name),
groups: ko.observableArray(user.groups),
// ...other attributes go here
// the list of available groups
availableGroups: ko.observableArray(groups)
};
};
// instantiate the view model
var viewModel = createUserViewModel(
// note that I'm using Smarty for my templating system. The
// lines below apply the json_encode method and disable the
// htmlspecialchars function which I have set up to encode
// all output by default
{$user|json_encode nofilter},
{$groups|json_encode nofilter}
);
ko.applyBindings(viewModel);
其中组
模型用于我的访问控制组。用户可以是零个或多个组的成员,并且以正常方式为雄辩的模型建立关系
在模板中,我使用data bind
属性设置了一组元素(文本、选择、单选按钮等),以将我的淘汰视图模型绑定到元素
在页面的
部分,我有以下内容:
public function getEditUser($id = null)
{
return View::make("account.edituser")
->with("user", User::find($id))
->with("groups", Group::all());
}
var createUserViewModel = function (user, groups) {
return {
id: ko.observable(user.id),
name: ko.observable(user.name),
groups: ko.observableArray(user.groups),
// ...other attributes go here
// the list of available groups
availableGroups: ko.observableArray(groups)
};
};
// instantiate the view model
var viewModel = createUserViewModel(
// note that I'm using Smarty for my templating system. The
// lines below apply the json_encode method and disable the
// htmlspecialchars function which I have set up to encode
// all output by default
{$user|json_encode nofilter},
{$groups|json_encode nofilter}
);
ko.applyBindings(viewModel);
createUserViewModel
函数的user
参数将采用JSON编码,因此它将如下所示:{id:1234,name:“Joe Smith”,groups:['group1','group2'],…}
这是一个简单的例子:我有几个表格可以输入比这复杂得多的其他信息
这有几个问题:
json_encode
直接将数据回送到脚本元素的主体中。我还没能利用这一点,但我认为其他人可以找到办法{$user|json_encode nofilter}
将打印一些JSON,您可以立即在其上尝试JSON.parse:
var user = JSON.parse({$user|json_encode nofilter})
然后在脚本中对其执行任何操作。我以前在映射中看到过这些内容,但没有仔细查看。我再看看。谢谢仔细阅读“高级使用”一节,这将帮助您了解这是否适用于更复杂的模型。它肯定会处理您上面给出的示例。