Javascript 如何使用angularjs从html调用自定义函数?
我想在我的Javascript 如何使用angularjs从html调用自定义函数?,javascript,html,angularjs,Javascript,Html,Angularjs,我想在我的js控制器中定义单独的方法,如下所示: angular.module('test').controller('mycontroller', mycontroller); function mycontroller() { //do sth }; function test(value) { console.log(value); //this is never written }; 这样我就有了一个干净的结构,
js
控制器中定义单独的方法,如下所示:
angular.module('test').controller('mycontroller', mycontroller);
function mycontroller() {
//do sth
};
function test(value) {
console.log(value); //this is never written
};
这样我就有了一个干净的结构,每个方法都在自己的块中分离
但是当我尝试如下使用它时,没有输出
<div ng-controller='mycontroller'>
{{test('printme')}}
</div>
{{test('printme')}
为什么?尝试将测试功能放入控制器中,并将其更改为
$scope.test = function(value){
console.log(value)
};
还要将$scope依赖项添加到控制器中尝试将测试函数放入控制器中,并将其更改为
$scope.test = function(value){
console.log(value)
};
还可以将$scope依赖项添加到控制器中如果要保持文件外观整洁,可以遵循John Papa的样式指南: 以下是我如何修正您的问题并对其应用干净的方法: 因为我的代码在一个IIFE中,你实际上可以在该块的任何地方进行
功能测试
,而不是在控制器功能中:
angular.module('testApp', [])
.controller('ctrl', ctrl);
function ctrl($scope) {
/* -- Public Properties & Methods -- */
$scope.test = test;
}
/* -- Private Properties & Methods -- */
function test(value) {
console.log(value);
}
我只是想按照第二种方法来做。我们多次创建希望绑定到DOM的变量:$scope.showOptions
。如果我们在控制器之外拥有该功能,我们将无法再访问此$scope.showOptions
,因此您将“难以”查询它。您可以通过函数参数请求变量/作用域来轻松解决这个问题。或者创建一个小的包装器函数来进行分派(几乎类似于双重分派)
这将允许您将所有主要的繁重工作保持在控制器之外,但确实引入了一个新的复杂性层,我知道我当然可以不使用它
因此,选择权在您。如果您想保持文件外观整洁,可以遵循John Papa的风格指南: 以下是我如何修正您的问题并对其应用干净的方法: 因为我的代码在一个IIFE中,你实际上可以在该块的任何地方进行
功能测试
,而不是在控制器功能中:
angular.module('testApp', [])
.controller('ctrl', ctrl);
function ctrl($scope) {
/* -- Public Properties & Methods -- */
$scope.test = test;
}
/* -- Private Properties & Methods -- */
function test(value) {
console.log(value);
}
我只是想按照第二种方法来做。我们多次创建希望绑定到DOM的变量:$scope.showOptions
。如果我们在控制器之外拥有该功能,我们将无法再访问此$scope.showOptions
,因此您将“难以”查询它。您可以通过函数参数请求变量/作用域来轻松解决这个问题。或者创建一个小的包装器函数来进行分派(几乎类似于双重分派)
这将允许您将所有主要的繁重工作保持在控制器之外,但确实引入了一个新的复杂性层,我知道我当然可以不使用它
因此,选择权在您。当您将mycontroller设置为要使用的控制器时,范围将绑定到组件<代码>测试在此作用域中不存在。因此,最好不要将
函数测试(值){}
放到范围变量上,比如$scope.test
当您将mycontroller设置为要使用的控制器时,范围会绑定到组件<代码>测试在此作用域中不存在。因此,最好不要将函数测试(值){}
放在一个作用域变量上,比如说$scope.test
,它可以工作。但是,是否还有一种方法可以在控制器功能之外定义功能块,并将对该功能的引用设置为作用域?这是可行的。但是,是否也有一种方法可以在控制器函数之外定义函数块,并将对该函数的引用设置为作用域?这可能就是我想要的。这可能就是我想要的。