0

我正在搜索如何使用带有文本框中的参数的控制器调用函数。 这是我的HTML代码:点击按钮时加载数据

<!DOCTYPE html> 
<html> 

    <head> 
    <link rel="stylesheet" href="style.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script> 
    <script src="controllerInput.js"></script> 
    <script src="app.js"></script> 
    </head> 

    <body ng-app="appName"> 
    <input type="text" id="idName" name="idName" ng-model="modelName" ng-controller="controllerName"> 
    <button class="btn btn-default" ng-click="functionName()">Execute</button> 
    </body> 

</html> 

这是控制器:

d3DemoApp.controller('controllerName',function($rootScope,$scope) { 
    $scope.modelName = ''; 
    $scope.functionName = function() { 
     myFunction($scope.modelName); 
    }; 
}); 

而且app.js:

function myFunction(concatURL){ 
    //loadData('URL' + concatURL); 
    console.log("Function successfully called !"); 
} 

的问题是在我的应用程序文件,我有一个函数loadData必须被调用,但它在名为controllerApp的控制器中,而我的函数myFunction不知道它是否在controllerApp中。 希望你能帮助我,非常感谢。

+1

你为什么不为你的函数创建一个服务,然后从控制器打电话了吗? – DevTrong

+0

你检查过你的控制台吗?有JavaScript错误'未捕获的ReferenceError:d3DemoApp未定义' – Jamiec

+0

@Jamiec,是的,我想这样做,但必须执行的代码是在app.js. – Anonyme

回答

0

的JS文件(控制器)对HTML文件的标题

var d3DemoApp = angular.module('D3demoApp', []); 

添加此,尝试将控制器包装成一个div

<body ng-app="D3demoApp"> 
    <div ng-controller="controllerFilterSearch"> 
    <input type="text" id="searchTextBox" name="searchTextBox" ng-model="searchText"> 
    <button class="btn btn-default" ng-click="getSearchText()">Rechercher</button> 
    </div> 
</body> 
+0

感谢您的回应,但它不能解决问题。 – Anonyme

+0

错误是什么。我现场编辑你的plunkr,它确实有效。 – mtamma

+0

感谢您的回复,我编辑了我的问题,因为它不能解决我的问题。非常感谢 ! – Anonyme

1

你已经在你的代码犯了两个错误

  1. 在尝试使用它之前,您尚未声明模块appName
  2. 您已将ng-controller仅应用于输入元素,而不是包含输入和按钮的元素。

要解决的第一个你要使用的模块之前需要这一行:

var variableName = angular.module("appName",[]); 

要解决第二,移动ng-controller元素了:

<body ng-app="appName" ng-controller="controllerName"> 
    <input type="text" id="idName" name="idName" ng-model="modelName"> 
    <button class="btn btn-default" ng-click="functionName()">Execute</button> 
</body> 

+0

感谢您的回复,我编辑了我的问题,因为它不能解决我的问题。非常感谢 ! – Anonyme

+0

@ afeffifari-1957你需要去阅读anguular文档。这可以通过依赖注入来实现,其中一个控制器可以依赖一个服务,并且该服务本身可以依赖于其他注入的服务。这些都是由文档覆盖的,并且太宽泛,无法在这里回答。 – Jamiec

0

我已经编辑好代码,请通过这个

<body ng-app="mainApp" > 
    <div ng-controller="controllerFilterSearch"> 
     <input type="text" id="searchTextBox" name="searchTextBox" ng-model="searchText" > 
     <button class="btn btn-default" ng-click="getSearchText()">Rechercher</button> 
    </div> 
</body> 

JS

var d3DemoApp = angular.module("mainApp", []); 

d3DemoApp.controller('controllerFilterSearch',function($rootScope,$scope) { 
    $scope.searchText = ''; 
    $scope.getSearchText = function() { 
     alert(); 
     myFunction($scope.searchText); 
    }; 
}); 
+0

感谢您的回复,我编辑了我的问题,因为它不能解决我的问题。非常感谢 ! – Anonyme