KO 视图模型:对象文字与函数
在 Knockout JS 中,可以使用对象文字或函数来声明视图模型。虽然两者的主要目的都是定义可观察的属性和计算函数,但它们之间的关键区别会影响封装、灵活性和代码组织。
对象文字:
var viewModel = { firstname: ko.observable("Bob") };
对于没有复杂逻辑或计算函数的简单视图模型来说,对象字面量是简单明了的。但是,它们:
函数:
var viewModel = function() { this.firstname = ko.observable("Bob"); };
函数提供了几个优点:
最佳实践:
在大多数情况下,建议使用函数来定义视图模型。它提供了更好的封装性和灵活性,可以更轻松地管理复杂的视图模型并确保对其进行正确访问。
私有属性和方法:
基于函数的视图模型允许使用自我模式在此上下文中创建私有属性和方法:
var ViewModel = function() { var self = this; self.privateProperty = ko.observable(); self.privateMethod = function() {}; };
绑定函数:
另外,现代浏览器和 Knockout JS 提供了绑定函数来将函数显式绑定到特定的 this 上下文:
var ViewModel = function() { this.items = ko.observableArray(); this.removeItem = function(item) { this.items.remove(item); }.bind(this); };
使用绑定函数可确保 this 引用视图模型实例,即使是在嵌套作用域内调用该函数时也是如此。
结论:
虽然对象字面量和函数都可以用来定义 Knockout 视图模型,但函数通常是首选,因为它们的封装性、灵活性以及在计算中对此的有效处理函数。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3