尝试绑定text
到视图模型之外的全局函数会引发以下错误:
knockout.js:60 Uncaught ReferenceError: Unable to process binding "foreach: function (){return names }" Message: Unable to process binding "text: function (){return myFunction($data) }" Message: myFunction is not defined
HTML
<ul data-bind="foreach: names">
<li data-bind="text: myFunction($data)"></li>
</ul>
JS
function myFunction(text){
return text + '--';
}
function demoViewModel() {
self.names = ['a', 'b', 'c'];
return self;
}
var mm = new demoViewModel();
ko.applyBindings(mm);
相反,如果我扩展String
对象并以下列方式应用函数,它会按预期工作:
<li data-bind="text: $data.myFunction()"></li>
扩展字符串对象:
String.prototype.myFunction = function(){
return this + '--';
}
为什么是这样?难道没有更好的方法将全局函数应用于text
绑定吗?