如何从html调用控制器功能?

时间:2016-09-22 12:54:20

标签: javascript html angularjs

您好我是AngularJs以及HTML,Javascript和CSS的新手,所以请尝试解释您对dummys的答案。

因此,由于某种原因,函数“updateFilterTerm”不会被调用。变量“filterTerm”始终与初始化相同。

就像你在代码中看到的那样,调用该函数的页面是另一个页面,它在变量“filterTerm”的帮助下显示内容,但是它们具有相同的控制器“BatchMonitorCtrl”。

我做错了什么或者你可以指导我解决这个问题吗?

这是我的Controller.js的一部分:

cell.empPhoto.sd_setImageWithURL(self.imageURL)

这是我的bm.html的一部分:

...
function BatchMonitorCtrl($scope, Batchmonitor, BatchmonitorConfig, ConfigService, $localStorage, $timeout, flash, $routeParams) {
    $scope.filterTerm = '2312ab78-1e3c-48c5-82af-e38b42d704eb';

    $scope.updateFilterTerm = function(filterTerm) {
        $scope.filterTerm = filterTerm;
    };
}
...

这是我的dc.html的一部分,我使用“filterTerm”来过滤批次:

...
<span ng-switch-default
    class="label label-primary {{types[charge.Type].CSS}}"
    style="cursor:pointer;padding:8px;"
    onclick="$(this).popover('toggle')"
    data-html='true'
    data-toggle="popover"
    data-trigger="manual"
    data-placement="top"
    title="{{&quot;common.BatchStatus-OK&quot;|i18n}}"
    data-content="Type: {{charge.Type}}<br />LogicalId: {{charge.LogicalId}}<br />Nest: {{charge.Nests}}<br />SetupDate: {{ charge.SetupDateObject | date:'yyyy-MM-dd HH:mm:ss' }}<br/>Updated: {{ charge.Updated['$date'] | date: 'yyyy-MM-dd HH:mm:ss' }}
    <br/><br/><a href='#/delete-charge' class='btn btn-primary btn-block' ng-click='updateFilterTerm({{charge._id}})'><span>{{&quot;common.Delete-Charge&quot;|i18n}}</span></a>">
    <h5><strong>{{charge.LogicalId}}</strong></h5>
</span>
...

3 个答案:

答案 0 :(得分:0)

我不确定,但我认为它与范围继承有关。 尝试使用controllerAs语法或其他点访问技术:

| filter : obj.filterTerm;

function setFilter(term){
    $scope.obj.filterTerm = term;
}

答案 1 :(得分:0)

我想我对自己的问题有了答案。

由于我在两个部分(页面)上都有相同的控制器,因此它们都有自己的控制器实例。因此,即使调用该函数,下一页也不会有上一页的信息。所以我需要找到另一个解决方案。

答案 2 :(得分:0)

在您的Html视图中,请使用此

<script type="text/javascript">

function functiontocallcontrollermethod()
{
    $.ajax({
        type: 'POST',
        url: '/Poll/Mymethod',
        data: { voteid: $("#voteDemocrat").val() }
    });

</script>

在您的控制器中

  [HttpPost]
  [WebMethod]

      public void Mymethod(int voteid)
    {

        /// WORK HERE
    }

最后,WebMethod命名空间是

使用System.Web.Services;