Rails3.2.6にknockout.jsを実装しようとしています。私はGemhttps://github.com/jswanner/knockoutjs-railsを使用しています。
ViewModelの読み込みに問題があります。
これがデバッグ用の私のHTMLです
<div data-bind="text: ko.toJSON(users)"></div>
これがCoffeeScriptからコンパイルされたJavaScriptです。このファイルは、を介してusers.js.coffee
アセットパイプラインに含まれています。//= require_tree .
application.js
(function() {
jQuery(function() {
var User, UserViewModel;
User = function(id, name) {
var self;
self = this;
self.id = ko.observable(id);
self.name = ko.observable(name);
return self.followers_count_message = ko.computed(function() {});
};
UserViewModel = function() {
var self;
self = this;
self.users = ko.observableArray([new User('1111', 'test name'), new User('1112', 'test name2')]);
self.addUsers = function() {
return self.users.push(new User('1113', 'test name'));
};
return self.addUsers();
};
ko.applyBindings(new UserViewModel());
return alert('done');
});
}).call(this);
ロードすると、divは次のように表示します。[null,null,null]
奇妙なことに、これをjsFiddleに実装すると、機能するように見えます。これを参照してください:http://jsfiddle.net/netwire88/HXYHU/2/
考え、アイデア?
更新:2012年7月31日
関数を変更してを削除することで、これを修正することができましたreturn
。ただし、別のCoffeeScriptファイルに移動したいと思います。
で試しましたがusers.js.coffee
、エラーが発生しますUncaught TypeError: Cannot read property 'nodeType' of null
User = (id, name) ->
self = undefined
self = this
self.id = ko.observable(id)
self.name = ko.observable(name)
@
UserViewModel = ->
self = this
self.users = ko.observableArray([new User("1111", "test name"), new User("1112", "test name2")])
self.addUsers = ->
self.users.push new User("1113", "test name")
self.addUsers()
@
ko.applyBindings new UserViewModel()