如何调用普通的js函数int angular component事件回调?

时间:2016-04-28 15:32:20

标签: javascript angularjs

我的角度组件中有一个onChange事件绑定,只要我给它一个其他角度控制器的功能,它就可以正常工作。但是,如果我传递普通的js函数,则不会调用任何内容。

这是我的角度模板:

<search-input on-change='$ctrl.updateDetected(value)'></search-input>

这是另一个控制器:

import angular from 'angular';
import htmlTemplate from './mainWindow.html';
import searchInputComponent from './components/searchInput/searchInput';

const moduleName = 'woodstore';

var module = angular.module(moduleName, []);

class MainWindowController {
    updateDetected(searchText) {
        console.log('In controller: '+searchText);
    }
}

module
    .component('mainWindow', {
        template: htmlTemplate,
        controller: MainWindowController
    })
    .component('searchInput', searchInputComponent);


function updateDetectedFunction(value) {
    console.log('In function: '+value);
} 

这会在控制台上打印In controller: Text to search for。如果我将模板更改为

<search-input on-change='updateDetectedFunction(value)'></search-input>
没有任何反应。

如何使用updateDetectedFunction()进行回叫?

1 个答案:

答案 0 :(得分:0)

我不认为可以在模板中调用普通函数,角度html模板总是绑定到作用域,模板中的任何函数在该作用域的上下文中都是eval,我认为只有你可以做的就是调用普通函数范围函数中的函数:

<search-input on-change='$ctrl.updateDetected(value)'></search-input>

class MainWindowController {
     updateDetected(searchText) {
            updateDetectedFunction(searchText)
     }
}