2016-09-22 17 views
0

こんにちは、私はAngularJsとHTML、Javascript、およびCSSにはとても新しいので、ダミーの答えを説明してください。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

私は、私は自分の質問への答えを持っていると思います。

私は両方の部分(ページ)に同じコントローラを持っているので、コントローラにはそれぞれ独自のインスタンスがあります。したがって、関数が呼び出されても次のページには前のページの情報はありません。だから私は別の解決策を見つける必要があります。あなたのHTMLビューで

0

わかりませんが、スコープ継承に関連すると思います。 controllerAs構文、または他のドットのアクセステクニクスを使用してみてください:

| filter : obj.filterTerm; 

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

私は試しましたそれは私のためには機能しません。たぶん私はそれを正しく理解していなかったでしょう。私の質問に私のコメントを参照してください。 – IAmRoot

0

[HttpPost] 
    [WebMethod] 

     public void Mymethod(int voteid) 
    { 

     /// WORK HERE 
    } 

最後にWebMethod属性の名前空間がSystem.Web.Servicesを使って

であるあなたのコントローラでは、この

<script type="text/javascript"> 

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

</script> 

を使用してください。

関連する問題