これはおそらく簡単な質問です。Rails インスタンス オブジェクトを使用してノックアウト ビューモデルを設定できますか? たとえば、mysite.com/person/1 に編集ページがあります。コントローラーはその人を見つけ、ビューは @person を使用してそのデータをレンダリングできます。
@person を使用してビューモデルを設定できますか? お気に入り:
self.name = ko.observable(@person.name);
これはおそらく簡単な質問です。Rails インスタンス オブジェクトを使用してノックアウト ビューモデルを設定できますか? たとえば、mysite.com/person/1 に編集ページがあります。コントローラーはその人を見つけ、ビューは @person を使用してそのデータをレンダリングできます。
@person を使用してビューモデルを設定できますか? お気に入り:
self.name = ko.observable(@person.name);
はい。ただし、変数を erb などで出力する必要があります。
ko.observable("<%= @person.name %>");
ただし、一般的に、特定の変数を特定のオブザーバブルに渡したくはありません。リソース自体をビュー モデルの新しい I スタンスに渡し、そこからビュー モデル変数を設定します。より良い例で更新します。私がコンピューターに着いたとき、しかし基本的に:
ko.applyBindings(new viewModel("<%= resource.to_json.html_safe %>"));
より良い例で更新
私が大まかにこのように構成した人のビューモデルは、括弧に注意してください。なぜそれらが必要なのか正確にはわかりませんが、正しく覚えていれば、括弧なしでは機能しません。
var personViewModel = function(person){
var self = this;
self.first_name = ko.observable(person.first_name);
self.last_name = ko.observable(person.last_name);
self.friends = ko.observableArray(person.friends);
}
person_json = <%= (@person.to_json.html_safe) %>;
ko.applyBindings(new personViewModel(person_json));
ただし、最近はビュー モデルに coffeescript を使用するのが好きです。各ビュー モデルのクラスとして、これは同じように動作するコードです (関数の代わりにクラスを使用して動作します)。
view_models/personviewmodel.js.coffee
class PersonViewModel
constructor: (person) ->
@first_name = ko.observable(person.first_name)
@last_name = ko.observable(person.last_name)
@friends = ko.observableArray(person.friends)
window.PersonViewModel = PersonViewModel
そして、フォームの下の実際のビューで、それが添付されています。
person_json = <%= (@person.to_json.html_safe) %>;
ko.applyBindings(new PersonViewModel(person_json));