Этот плункер показывает это лучше всего: http://plnkr.co/edit/y3uacaQSc1MbrWKfb0At?p=preview а>
Но вот код:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope,testFactory) {
$scope.name = 'World';
var test_var = "iceland";
$scope.testFunction = testFactory.testFunction;
});
app.service('testFactory',function(){
this.testFunction = function(){
alert(test_var);
};
})
И в html:
<body ng-controller="MainCtrl">
<p ng-click="testFunction()">Hello {{name}}!</p>
</body>
Прямо сейчас, как вы можете видеть в plunkr, test_var не определен, это имеет смысл, потому что он не определен ... Поэтому я хочу передать его из контроллера, но если я сделаю что-то вроде $scope.testFunction = testFactory.testFunction(test_var);
, то функция testFunction выполняется вместе с предупреждением из-за круглых скобок. Но я просто хочу передать test_var, а не выполнять функцию. Как я могу его сдать?
1 ответ
Оберните вызов в функцию, чтобы вызов testFactory.testFunction(test_var)
вызывался только тогда, когда $scope.testFunction()
...
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope,testFactory) {
$scope.name = 'World';
var test_var = "iceland";
$scope.testFunction = function() {
testFactory.testFunction(test_var);
};
});
app.service('testFactory',function(){
this.testFunction = function(test_var){
alert(test_var);
};
})
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.