When it is good to use viewModel ? What is difference between viewModel and Block?
I am bit confuse about using viewModel in Magento. I am not getting exact difference between viewModel and Block.
In which case using viewModel is best case?
Any help will be appreciated.
magento2.2 blocks viewmodel
add a comment |
I am bit confuse about using viewModel in Magento. I am not getting exact difference between viewModel and Block.
In which case using viewModel is best case?
Any help will be appreciated.
magento2.2 blocks viewmodel
add a comment |
I am bit confuse about using viewModel in Magento. I am not getting exact difference between viewModel and Block.
In which case using viewModel is best case?
Any help will be appreciated.
magento2.2 blocks viewmodel
I am bit confuse about using viewModel in Magento. I am not getting exact difference between viewModel and Block.
In which case using viewModel is best case?
Any help will be appreciated.
magento2.2 blocks viewmodel
magento2.2 blocks viewmodel
asked 7 mins ago
Dhaval SolankiDhaval Solanki
1,3341932
1,3341932
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Magento veteran Jessie has a well famous blog on viewModel which you can find it here. It answers your question at the end. It says:
When to use ViewModels?
When would you want to use ViewModels? Well, when Magento 2.2 comes out and your code doesn't need to be
backwards compatible with Magento 2.1 any more, my answer will be:
Always! However, reality is that we most likely need to maintain
backwards compatibility for some time. And the procedure above is a
bit lengthy to follow if Block classes are still simple enough without
any custom constructor.
I would say that you create some kind of ViewModel functionality as
soon as you start overriding the Block constructor to inject your own
dependency into it. A Block class that extends from a parent and
simply reuses the parents dependencies is not that bad, as long as you
don't have a huge dislike of $context. However, as soon as the Block
becomes more complex, it's always better offload features to other
classes. And ViewModels are meant to be the good addition to that.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "479"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f260331%2fwhen-it-is-good-to-use-viewmodel-what-is-difference-between-viewmodel-and-bloc%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Magento veteran Jessie has a well famous blog on viewModel which you can find it here. It answers your question at the end. It says:
When to use ViewModels?
When would you want to use ViewModels? Well, when Magento 2.2 comes out and your code doesn't need to be
backwards compatible with Magento 2.1 any more, my answer will be:
Always! However, reality is that we most likely need to maintain
backwards compatibility for some time. And the procedure above is a
bit lengthy to follow if Block classes are still simple enough without
any custom constructor.
I would say that you create some kind of ViewModel functionality as
soon as you start overriding the Block constructor to inject your own
dependency into it. A Block class that extends from a parent and
simply reuses the parents dependencies is not that bad, as long as you
don't have a huge dislike of $context. However, as soon as the Block
becomes more complex, it's always better offload features to other
classes. And ViewModels are meant to be the good addition to that.
add a comment |
Magento veteran Jessie has a well famous blog on viewModel which you can find it here. It answers your question at the end. It says:
When to use ViewModels?
When would you want to use ViewModels? Well, when Magento 2.2 comes out and your code doesn't need to be
backwards compatible with Magento 2.1 any more, my answer will be:
Always! However, reality is that we most likely need to maintain
backwards compatibility for some time. And the procedure above is a
bit lengthy to follow if Block classes are still simple enough without
any custom constructor.
I would say that you create some kind of ViewModel functionality as
soon as you start overriding the Block constructor to inject your own
dependency into it. A Block class that extends from a parent and
simply reuses the parents dependencies is not that bad, as long as you
don't have a huge dislike of $context. However, as soon as the Block
becomes more complex, it's always better offload features to other
classes. And ViewModels are meant to be the good addition to that.
add a comment |
Magento veteran Jessie has a well famous blog on viewModel which you can find it here. It answers your question at the end. It says:
When to use ViewModels?
When would you want to use ViewModels? Well, when Magento 2.2 comes out and your code doesn't need to be
backwards compatible with Magento 2.1 any more, my answer will be:
Always! However, reality is that we most likely need to maintain
backwards compatibility for some time. And the procedure above is a
bit lengthy to follow if Block classes are still simple enough without
any custom constructor.
I would say that you create some kind of ViewModel functionality as
soon as you start overriding the Block constructor to inject your own
dependency into it. A Block class that extends from a parent and
simply reuses the parents dependencies is not that bad, as long as you
don't have a huge dislike of $context. However, as soon as the Block
becomes more complex, it's always better offload features to other
classes. And ViewModels are meant to be the good addition to that.
Magento veteran Jessie has a well famous blog on viewModel which you can find it here. It answers your question at the end. It says:
When to use ViewModels?
When would you want to use ViewModels? Well, when Magento 2.2 comes out and your code doesn't need to be
backwards compatible with Magento 2.1 any more, my answer will be:
Always! However, reality is that we most likely need to maintain
backwards compatibility for some time. And the procedure above is a
bit lengthy to follow if Block classes are still simple enough without
any custom constructor.
I would say that you create some kind of ViewModel functionality as
soon as you start overriding the Block constructor to inject your own
dependency into it. A Block class that extends from a parent and
simply reuses the parents dependencies is not that bad, as long as you
don't have a huge dislike of $context. However, as soon as the Block
becomes more complex, it's always better offload features to other
classes. And ViewModels are meant to be the good addition to that.
answered 1 min ago
Rajeev K TomyRajeev K Tomy
14.4k54585
14.4k54585
add a comment |
add a comment |
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f260331%2fwhen-it-is-good-to-use-viewmodel-what-is-difference-between-viewmodel-and-bloc%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown