Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法执行Controllera中的角度函数_Javascript_Jquery_Html_Angularjs_Modal Dialog - Fatal编程技术网

Javascript 无法执行Controllera中的角度函数

Javascript 无法执行Controllera中的角度函数,javascript,jquery,html,angularjs,modal-dialog,Javascript,Jquery,Html,Angularjs,Modal Dialog,我是Angular的新手,希望使用Angular的ui引导使用模态弹出表单。我在向你学习。可以看出,它利用Controllera来控制弹出窗口 我面临的问题是,在ng click事件中无法执行ctrl中的函数,即使我已经将正确的值ng click='ctrl.open' 为了更清楚,我将在下面提供我的代码 Controller.js 注意,即使是console.log“selected”;他没有被解雇。因此,可以得出结论,ng click无法访问该功能 View.html 我试图做的是在用户单击

我是Angular的新手,希望使用Angular的ui引导使用模态弹出表单。我在向你学习。可以看出,它利用Controllera来控制弹出窗口

我面临的问题是,在ng click事件中无法执行ctrl中的函数,即使我已经将正确的值ng click='ctrl.open'

为了更清楚,我将在下面提供我的代码

Controller.js

注意,即使是console.log“selected”;他没有被解雇。因此,可以得出结论,ng click无法访问该功能

View.html

我试图做的是在用户单击用户名单元格时打开一个模式。HTML工作正常,因为我已经尝试将ng click更改为$scope中的函数,并且工作正常。另外,console.logctrl;显示内容,因此我确信已设置ctrl对象。下面我提供了日志的屏幕截图

注意,我从Chrome上得到了DevTools警告,我不知道如何摆脱它,我使用的是.min.js而不是.map。然而,我认为这不是问题所在。


我不确定哪里出了错。如果您有任何帮助和指导,我们将不胜感激。

您需要传递模态id才能将其打开,因为它丢失了

您似乎混淆了当前控制器和modalController。您将controllerAs声明为:“ctrl”,但这并不意味着您可以在当前控制器中使用ctrl

您有两个控制器,listEmployeeCtrl和ModalInstanceCtrl。只有第二个控制器ModalInstanceCtrl可以在其模板中使用ctrl

如果还希望对listEmployeeCtrl使用ctrl,则需要将ng控制器指令添加到view.html

使用示例代码:

<div ng-controller="listEmployeeCtrl as ctrl">
    ...
    <tbody>
        <tr ng-repeat="emp in data.employees|orderBy:orderByField:reverseSort|filter:{ Name: search_value }">
            <td>{{emp.SalesmanId}}</td>
            <td>{{emp.Name}}</td>
            <td>{{emp.Address}}</td>
            <td>{{emp.Phone}}</td>
            <td>{{emp.Email}}</td>
            <td ng-click='ctrl.open()'>{{emp.Username}}</td>
            <td>{{emp.Role}}</td>
        </tr>
    </tbody>
    ...
</div>
您可以在此处添加controllerAs语法:

.when('...', {
    controller: 'listEmployeeCtrl',
    controllerAs: 'ctrl',
    templateUrl: '.../view.html'
})

感谢您的回复!我应该把它放在哪里?注意,即使是console.log“selected”;他没有被解雇。我将更新添加该信息。您使用的是模板url,但未在.cshtml.use.cshtml文件的tbody上方定义。该表不是模式模板。我有我自己的模板,它已经有了那个标题,但我不在这里写。当您能够访问data.employees而不使用前面的ctrl键时,这意味着您也可以访问open而不使用前面的ctrl键。你能试试吗?你能告诉我们你在哪里使用controllerAs吗?@GiovaniVercauteren当然,当我初始化modalInstance时,我会更新我的问题。@ImmanuelKirubaharanS你的意思是在$scope中打开吗?不。我的意思是尝试将模板的ctrl.open更改为open in ng click。谢谢您的回复!通过路由控制器定义控制器与在html元素上定义控制器(即ng controller=listEmployeeCtrl)之间有什么区别?ngController语法允许您轻松添加子控制器,而使用路由语法则没有。在功能上,没有区别。是的,你说得对!现在可以访问该功能。只需要修复模态就可以了。谢谢你的解释,谢谢你花时间帮忙!
<div ng-controller="listEmployeeCtrl as ctrl">
    ...
    <tbody>
        <tr ng-repeat="emp in data.employees|orderBy:orderByField:reverseSort|filter:{ Name: search_value }">
            <td>{{emp.SalesmanId}}</td>
            <td>{{emp.Name}}</td>
            <td>{{emp.Address}}</td>
            <td>{{emp.Phone}}</td>
            <td>{{emp.Email}}</td>
            <td ng-click='ctrl.open()'>{{emp.Username}}</td>
            <td>{{emp.Role}}</td>
        </tr>
    </tbody>
    ...
</div>
.when('...', {
    controller: 'listEmployeeCtrl',
    templateUrl: '.../view.html'
})
.when('...', {
    controller: 'listEmployeeCtrl',
    controllerAs: 'ctrl',
    templateUrl: '.../view.html'
})