icheckプラグ用の顧客バインディングを作成しました。チェックボックスをオンにしたときにバインディングオブジェクトを更新する必要があります。ノックアウト顧客バインディングvalueAccessor()は関数ではありません
これは私のViewModel
var userViewModel = function() {
var self = this;
self.UserFullData = ko.observable();
self.loadObject = function() {
$.ajax({
type: 'GET',
contentType: 'application/json',
url: '../UserData.do/GetUser?id=1',
success: function (result) {
var data = JSON.parse(result);
if (data) {
self.UserFullData(data); //data from ajax
}
}
});
};
Ajaxのデータです:
{"User":{"ID":1,"HumanID":1,"LoginName":"cccc","LoginPass":"eeee","PermissionID":1,"DepartmentID":8,"Name":"cz","Sex":1,"SexStr":null,"EName":"cheo","NickName":"b","Company":null,"Address":null,"Email":null,"Country":0,"Province":0,"City":0,"Area":0,"PersonType":0,"Mobile":null,"PhoneNumber":"123456","MSN":null,"Fax":null,"Extension":null,"LastLoginTime":"0001-01-01T00:00:00","Position":null},"PermissionGroup":[{"ID":1,"Title":"a","View":false,"Update":true}]}
HTML:
'表示' はFullUserData.PermissionGroup
<div class="box" data-bind="with:UserFullData">
<div data-bind="foreach:PermissionGroup">
<input type="checkbox" class="minimal" style="position: absolute; opacity: 0;" data-bind="iCheckBinding:View">
の配列内のプロパティです次はクストーですマー結合機能:
ko.bindingHandlers.iCheckBinding = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
$(element).iCheck({
checkboxClass: 'icheckbox_minimal-blue',
radioClass: 'iradio_minimal-blue'
});
var value = valueAccessor();
var valueUnwrapped = ko.unwrap(value);
if (valueUnwrapped) {
$(element).iCheck('check');
}
else {
$(element).iCheck('uncheck');
}
$(element).on('ifChanged', function() {
var newValue = this.checked;
var observable = valueAccessor();
//observable always not a function
observable(newValue);
});
}
};
今ではすべての他の人が私にはうまく動作します。..ちょうど観察できる(newValueに)私をstucked機能ではありません、私は私のオブジェクトを更新することはできません。
誰でも知っていますか?
**実行可能な** Stack Snippet( '<>'ツールバーボタン)にすべてを入れて、問題が生きているかどうかを確認してください。 –
これを見てください - http://stackoverflow.com/questions/21297542/integrate-icheck-plugin-with-knockout-js – gkb