2016-09-22 40 views
0

嗨我對AngularJs和HTML,Javascript和CSS非常新,所以請嘗試解釋你的答案dummys。如何從html調用控制器函數?

因此,出於某種原因,函數「updateFilterTerm」不會被調用。變量「filterTerm」始終保持與初始化相同。

就像您在代碼中看到的那樣,調用該函數的頁面是另一個像使用變量「filterTerm」幫助顯示內容的頁面,但它們具有相同的控制器「BatchMonitorCtrl」。

我做錯了什麼,或者你能指導我解決這個問題嗎?

這裏是我的Controller.js的一部分:

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

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

這裏是我的bm.html的一部分:

... 
<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> 
... 

這裏是我的dc.html的一部分,我用「 filterTerm「來過濾批次:

... 
<tr ng-repeat="batch in allBatches | orderBy: 'Sort' | filter: filterTerm"> 
... 
+0

只是要清楚。具有變量「filterTerm」的過濾器起作用。問題是函數沒有設置「$ scope.filterTerm = filterTerm;」。 – IAmRoot

+0

也許「數據內容」中的語法錯誤?由於字符串,我不確定它是否得到正確解決在這一點上: data-content =「... ng-click ='updateFilterTerm({{charge._id}})'...」 – IAmRoot

回答

0

我想我有一個答案,我自己的問題。

由於我在兩個部分(頁)上都有相同的控制器,所以它們都有自己的此控制器實例。所以即使這個函數被調用,下一頁也不會有前一頁的信息。所以我需要找到另一個解決方案。

0

我不確定,但我認爲它與範圍繼承有關。 嘗試使用controllerAs語法,或其他接入點工藝:

| filter : obj.filterTerm; 

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

我試過它但它不適用於我。也許我沒有正確理解它。另請參閱我對我的問題的評論。 – IAmRoot

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

;

相關問題