我試圖在Rails 3.2.6中實現knockout.js。我正在使用Gem https://github.com/jswanner/knockoutjs-rails。Rails資產管道+ knockout.js
我無法加載ViewModel。
這是我對調試
<div data-bind="text: ko.toJSON(users)"></div>
HTML下面是從的CoffeeScript編譯JavaScript的。該文件是users.js.coffee
和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);
在加載包含在通過//= require_tree .
資產管道,在div顯示此:[null,null,null]
奇怪的是,如果我實現了這一點的jsfiddle,似乎工作。看到這個:http://jsfiddle.net/netwire88/HXYHU/2/
想法,想法?
UPDATE:7/31/2012
我能夠通過改變功能刪除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()
把你的用戶對象和你的viewmodel放到你的application.js中。你不需要jquery調用東西來進行測試。淘汰賽運行沒有jQuery。 – glenn 2012-07-29 10:09:47
謝謝丹尼爾,但這似乎沒有工作。有些東西導致綁定無法正常工作。 – Dean 2012-07-30 10:55:21
其實@dean,如果你使用這整個東西,它不能在小提琴中工作。我不認爲這是一個淘汰賽問題,我認爲它是一個咖啡問題。 – Tyrsius 2012-07-30 21:34:10