(每天都有大量的问题链接回原因为什么我不能设置我的观察值,而不是有这么多不同的答案说同样的事情,我想创建一个问题,以回顾每个人)
设置我的observable observableArray的值不会更新!
为什么我不能将项添加到我的Knockout可观察数组中?
所以这是一个通用的模式问题,但我已经有一段时间来回走动.
模型应该在MV*中有一个保存方法吗?
我经常在Knockout,Ember和有时甚至是Angular之间来回跳转,但我常常遇到的问题之一就是模型在它的类或原型上有一个保存方法,它知道如何保存更改以减少应用程序周围的依赖关系服务(也就是说模型有一个服务,用于保存所有其他视图模型/控制器通过了解模型继承)或者是否应该有一个服务,每个视图模型/控制器依赖于具有保存更改的特定方法对象?
示例JavaScript伪代码
var person = new Model.Person();
person.name = 'Bill';
person.save();
Run Code Online (Sandbox Code Playgroud)
VS
var personService = require('services/person.service');
var person = new Model.Person();
person.name = 'Bill';
personService.save(person);
Run Code Online (Sandbox Code Playgroud)
两者都实现了保存人员的相同目的,但在示例1中,视图模型/控制器不了解服务或如何实现服务,只有当您想要更改某个人时,才能保存它.在示例二中,我们不仅要了解保存方法,还要了解如何实现保存.
我意识到这是一个基于意见的问题,但如果你能用事实来支持你的意见,那将是事实,所以请提及备份任何索赔,以便不会因为'主要基于意见'而关闭
javascript model-view-controller ember.js angularjs knockout.js
我有一个范围我应用于rails中的Mongoid对象,在开发时效果很好,但在运行测试时却没有.它实际上在测试中根本不起作用.这是一个嵌入式文档.
父母:
class Person
include Mongoid::Document
def self.with_appointments
where(:appointments.not => { '$size' => 0 })
end
embeds_many :appointments, store_as: 'Appointments', class_name: 'Appointment'
end
Run Code Online (Sandbox Code Playgroud)
嵌入的孩子:
class Appointment
include Mongoid::Document
embedded_in :person
end
Run Code Online (Sandbox Code Playgroud)
当我对我的模型运行测试时,它会返回人员是否有约会.如果我在开发中针对数据库从我的控制器运行相同的操作,则过滤掉空委员的人.
我错过了什么?
在要求我更改数据库设置之前 -
我有一个js小提琴(位于这里),我想模仿使用knockout.js.这个想法是每个按钮都有一个相应的div标签.如果相应的div标签可见,则在单击按钮时应隐藏.否则,它应该显示.如果任何其他非对应的div可见,则应隐藏然后显示相应的div.如何使用knockout模仿这个jQuery版本?淘汰版的js小提琴就在这里.它有效,但看起来仍然很冗长.似乎应该有一种方法可以使它更具活力并减少工作量.任何帮助是极大的赞赏.
<style type="text/css">
.text { background-color: lightgray; }
</style>
<script type="text/javascript">
$(document).ready(function () {
var viewModel = {
showHide1: ko.observable(false),
showHide2: ko.observable(false),
showHide3: ko.observable(false),
toggle1: function () {
this.showHide1(true);
this.showHide2(false);
this.showHide3(false);
},
toggle2: function () {
this.showHide1(false);
this.showHide2(true);
this.showHide3(false);
},
toggle3: function () {
this.showHide1(false);
this.showHide2(false);
this.showHide3(true);
}
};
ko.applyBindings(viewModel);
});
</script>
<div id="text1" class="text" data-bind="if: showHide1">Text 1</div>
<div id="text2" class="text" data-bind="if: showHide2">Text 2</div>
<div id="text3" class="text" data-bind="if: showHide3">Text 3</div>
<br />
<br />
<button id="button1" …Run Code Online (Sandbox Code Playgroud) 我正在使用 Rails 构建一个 API,其中有一些我可能想要用于管理目的的页面。我提供的其中一个模型被称为“an”,asset因为它就是这样的。
rake routes问题是,在使用和从 API 获取资产时,所有路由都正确显示,这很好,但当我尝试PUT更新资产时,它会失败,方法不允许。我尝试更改名称,Rails 与其他任何东西都很好。
如何在不重命名模型或使用别名路由的情况下解决此问题?
我刚刚使用Knockout转换为使用Bloodhound.js和Typeahead.js.我有几个问题 -
Name在建议列表中显示该属性我现在"静态地"添加新数据,但它仍应显示在结果集中,而不是
self.addNew = function () {
self.someOptions.push(new Option(self.someOptions().length + 1, 'Johnnn'));
}
Run Code Online (Sandbox Code Playgroud)
我支持任何有效的建议,所以如果不需要,我不会使用Bloodhound.js,但由于我的应用程序的性质,我不能删除属性作为observables,但在某些时候调用ko.toJS是绝对是一个选择.
javascript ×4
knockout.js ×4
angularjs ×1
binding ×1
bloodhound ×1
ember.js ×1
html ×1
jquery ×1
mongoid ×1
mvvm ×1
rails-api ×1
rspec ×1
ruby ×1
typeahead.js ×1