[英]Angular factory prototype dissociation on ng-click
我有一家工廠,工廠里有一系列需要相互調用的原型。 問題是使用ng-click
時,將對this的引用應用於html模板,而不是原始工廠類。
這是一個例子:
angular.factory('myFactory', function(){
function FactoryA(){}
FactoryA.prototype.hello = function(){ console.log('Hello') };
FactoryA.prototype.useHello = function(){ this.hello() };
return FactoryA;
}
控制器會將工廠設置為$ scope變量“ myFactory”。
從html模板中將這樣調用ng-click
:
<button type="button" ng-click="myFactory.useHello()">Hello</button>
問題是myFactory.useHello上下文中的“ this”被html模板引用替換,並且失去了與FactoryA及其其他原型的鏈接。
如何保持ng-click函數與factory類及其其他原型相關聯?
您可以將factory方法綁定到自身以避免發生此問題,但這是一個較差的解決方法。
正如@ ste2425所說,您應該在控制器中聲明一個處理程序,該處理程序將執行對service方法的調用,並在模板中使用此處理程序:
<button type="button" ng-click="useHello()">Hello</button>
在您的控制器中:
$scope.useHello = function() {
myFactory.useHello();
}
而且,對工廠/服務使用原型聲明,這些聲明在設計上是單例的,這是沒有用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.