我已经看过几个使用TypeScript和角度控制器并通过范围like this one附加方法的例子。
但是,现在更好的做法是使用controllerAs
。
给定以下TypeScript(假设它在其他地方正确注册为控制器等):
class exampleCtrl {
public publicArray = [1,2,3];
public somePublicMethod() {
window.console.log('ran function')
}
}
这会产生:
var exampleCtrl = (function () {
function exampleCtrl() {
this.publicArray = [1, 2, 3];
}
exampleCtrl.prototype.somePublicMethod = function () {
window.console.log('ran function');
};
return exampleCtrl;
}());
注意somePublicMethod
如何添加到原型,但publicArray
已直接添加到this
。
据我所知,使用controllerAs无法通过DOM获得添加到原型的方法。
e.g
<div ng-controller="exampleCtrl as vm">
{{vm}} <!-- No function is output just {"publicArray":[1,2,3]} -->
<div ng-click="vm.somePublicMethod">Click me</div> <!-- click event doesn't work -->
</div>
我现在如何通过DOM 访问somePublicMethod
?
或者更确切地说,当使用controllerAs语法时,如何在TypeScript(ES6)类中公开访问公共函数?
plunker显示我所看到的内容。
其他要点:
我知道public
,private
和protected
实际上并没有改变代码的编译方式,只是在你错误地使用它时会发出警告。
答案 0 :(得分:2)
是
$this->dbsections->set('SIZE', 'SIZE+1', FALSE);// third parameter FALSE
$this->dbsections->where('NAME', "ABC");
$this->dbsections->update('sections');
据我所知,使用controllerAs无法通过DOM获得添加到原型的方法。
他们是。这就是JS原型的工作方式。