So let says our model is as following (expressed in typescript for clarity) :
class MyModel extends kendo.data.ObservableObject {
EnabledDate() { return false; }
}
and we have a the data-binding expressed as following :
<div data-role="datepicker" data-bind="enabled:EnabledDate"></div>
or (with parentheses)
<div data-role="datepicker" data-bind="enabled:EnabledDate()"></div>
Ok -> These both works perfectly, as expected the datepicker is disabled !
( But please note, strangely :
<div data-role="datepicker" data-bind="enabled:UnexistingEnabledDate()"></div>
--> generate an error : TypeError: d.UnexistingEnabledDate is not a function
while
<div data-role="datepicker" data-bind="enabled:UnexistingEnabledDate"></div>
--> gives no error, but the widget is not disabled !
)
Now, if we want to tidy our model and group "Enabled/Disabled" in a specialized class, let say :
class MySpecializedModel extends kendo.data.ObservableObject {
EnabledDate() { return false; }
}
our model becomes :
class MyModel extends kendo.data.ObservableObject {
private _specializedInstance: MySpecializedModel;
GetSpecializedInstance():MySpecializedModel {
if (this._specializedInstance == undefined) {
this._specializedInstance = new MySpecializedModel();
}
return this._specializedInstance;
}
}
and our data-bind attribute in markup has to be modified, but we can't find a working way of accessing EnabledDate via GetSpecializedInstance.
We tried the following :
<div data-role="datepicker" data-bind="enabled:GetSpecializedInstance.EnabledDate"></div>
--> no javascript errors, but the binding is not working (widget not disabled as expected)
<div data-role="datepicker" data-bind="enabled:GetSpecializedInstance().EnabledDate"></div>
--> TypeError: e.bind is not a function
<div data-role="datepicker" data-bind="enabled:GetSpecializedInstance().EnabledDate()"></div>
--> no javascript errors and correctly binded, but infinite loop (too much recursion) occurs later on, while it does not occur with the "EnabledDate" working binding scheme
<div data-role="datepicker" data-bind="enabled:GetSpecializedInstance.EnabledDate()"></div>
--> TypeError: (intermediate value).EnabledDate is not a function
We also tried accessing SpecializedInstance as a getter property instead of a function by modifying MyModel class with the following code :
class MyModel extends kendo.data.ObservableObject {
private _specializedInstance: MySpecializedModel;
get SpecializedInstance(): MySpecializedModel{
if (this._specializedInstance == undefined) {
this._specializedInstance = new MySpecializedModel();
}
return this._specializedInstance;
};
set SpecializedInstance(value: MySpecializedModel) {
this._specializedInstance= value;
};
}
and the following markup gave the following errors :
<div data-role="datepicker" data-bind="enabled:SpecializedInstance.EnabledDate"></div>
--> TypeError: e.bind is not a function
<div data-role="datepicker" data-bind="enabled:SpecializedInstance().EnabledDate"></div>
--> TypeError: d.SpecializedInstance is not a function
<div data-role="datepicker" data-bind="enabled:SpecializedInstance().EnabledDate()"></div>
--> TypeError: d.SpecializedInstance is not a function
<div data-role="datepicker" data-bind="enabled:SpecializedInstance.EnabledDate()"></div>
--> no javascript errors and correctly binded, but infinite loop (too much recursion) occurs later on, while it does not occur with the "EnabledDate" working binding scheme
So, what is the correct syntax when binding with such multiple functions calls level ?
Thanks for your support !
We are trying to do data binding with multiple levels of function calls in order to tidy our base model (not having all of our functions related to some requirements in our model root's)
So let says our model is as following (expressed in typescript for clarity) :
class MyModel extends kendo.data.ObservableObject { EnabledDate() { return false; }}
and we have a the data-binding expressed as following :
<div data-role="datepicker" data-bind="enabled:EnabledDate"></div>
or (with parentheses)
<div data-role="datepicker" data-bind="enabled:EnabledDate()"></div>Ok -> These both works perfectly, as expected the datepicker is disabled !
( But please note, strangely :
<div data-role="datepicker" data-bind="enabled:UnexistingEnabledDate()"></div>--> generate an error : TypeError: d.UnexistingEnabledDate is not a function
while
<div data-role="datepicker" data-bind="enabled:UnexistingEnabledDate"></div>--> gives no error, but the widget is not disabled !
)
Now, if we want to tidy our model and group "Enabled/Disabled" in a specialized class, let say :
class MySpecializedModel extends kendo.data.ObservableObject { EnabledDate() { return false; }}our model becomes :
class MyModel extends kendo.data.ObservableObject { private _specializedInstance: MySpecializedModel; GetSpecializedInstance():MySpecializedModel { if (this._specializedInstance == undefined) { this._specializedInstance = new MySpecializedModel(); } return this._specializedInstance; }}
and our data-bind attribute in markup has to be modified, but we can't find a working way of accessing EnabledDate via GetSpecializedInstance.
We tried the following :
<div data-role="datepicker" data-bind="enabled:GetSpecializedInstance.EnabledDate"></div>--> no javascript errors, but the binding is not working (widget not disabled as expected)
<div data-role="datepicker" data-bind="enabled:GetSpecializedInstance().EnabledDate"></div>--> TypeError: e.bind is not a function
<div data-role="datepicker" data-bind="enabled:GetSpecializedInstance().EnabledDate()"></div>--> no javascript errors and correctly binded, but infinite loop (too much recursion) occurs later on, while it does not occur with the "EnabledDate" working binding scheme
<div data-role="datepicker" data-bind="enabled:GetSpecializedInstance.EnabledDate()"></div>--> TypeError: (intermediate value).EnabledDate is not a function
We also tried accessing SpecializedInstance as a getter property instead of a function by modifying MyModel class with the following code :
class MyModel extends kendo.data.ObservableObject { private _specializedInstance: MySpecializedModel; get SpecializedInstance(): MySpecializedModel{ if (this._specializedInstance == undefined) { this._specializedInstance = new MySpecializedModel(); } return this._specializedInstance; }; set SpecializedInstance(value: MySpecializedModel) { this._specializedInstance= value; };}
and the following markup gave the following errors :
<div data-role="datepicker" data-bind="enabled:SpecializedInstance.EnabledDate"></div>--> TypeError: e.bind is not a function
<div data-role="datepicker" data-bind="enabled:SpecializedInstance().EnabledDate"></div>--> TypeError: d.SpecializedInstance is not a function
<div data-role="datepicker" data-bind="enabled:SpecializedInstance().EnabledDate()"></div>--> TypeError: d.SpecializedInstance is not a function
<div data-role="datepicker" data-bind="enabled:SpecializedInstance.EnabledDate()"></div>--> no javascript errors and correctly binded, but infinite loop (too much recursion) occurs later on, while it does not occur with the "EnabledDate" working binding scheme
So, what is the correct syntax when binding with such multiple functions calls level ?
Thanks for your support !
