在controller我遵循的方法:
controller
var isPaused = false; $scope.switcher = function (booleanExpr, trueValue, falseValue) { return booleanExpr ? trueValue : falseValue; }; $scope.isPaused = function () { return isPaused; };
我可以从HTML调用它,例如:
<body ng-controller="Cntrl"> ... <h4> {{ switcher( isPaused(), 'Search Address Mode', 'Search Location Mode' )}} </h4> <div class="btn-group"> ... </div>
如您所见,如果我得到isPaused()回报false``<h4>Search Location Mode</h4>
isPaused()
false``<h4>Search Location Mode</h4>
这是实用程序,因此我想将其定义为 factory
factory
feederliteModule.factory('switcher', function () { return { sw: function (booleanExpr, trueValue, falseValue) { return booleanExpr ? trueValue : falseValue; } }; });
没有例外
当我尝试这样称呼它时:
<h4> {{ switcher.sw( isPaused(), 'Search Address Mode', 'Search Location Mode' )}} </h4> <div class="btn-group"> ... </div>
没发生什么事。
**我已添加'switcher'到控制器。
'switcher'
如何从HTML调用工厂方法?
(*如果不清楚,欢迎您更改/编辑我的问题)
谢谢,
好吧,您实际上不应该这样做…但是您 可以 做的是将服务对象放在$ scope的一个属性中,然后从那里调用它。
app.controller('MyCtrl', function($scope, switcher) { $scope.switcher = switcher; });