簡體   English   中英

在ng-click上分解Angular工廠原型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM