代码之家  ›  专栏  ›  技术社区  ›  Chris

角度中继器和首次尝试使用角度

  •  -1
  • Chris  · 技术社区  · 6 年前

    我第一次尝试用angularASP.Net/DotNetNukeMVC项目。

    @inherits DotNetNuke.Web.Mvc.Framework.DnnWebViewPage<IEnumerable<IMT.AdvancedProductSearchMVC.Models.SearchTerm>>
    @using DotNetNuke.Web.Mvc.Helpers
    
    <script src="/DesktopModules/RazorCart/Core/Content/Scripts/angular.min.js"></script>
    
    <div ng-app="APSApp" class="container">
        <br />
        <br />
        <input type="text" placeholder="Search Terms" ng-model="searchTerms" />
        <br />
        <div ng-controller="apsCtl">
            <table class="table">
                <tr ng-repeat="r in searchTerms">
                    <td>{{r.DisplayText}}</td>
                    <td><input type="text" ng-model="r.SearchInput"></td>
                </tr>
            </table>
        </div>
    </div>
    
    <script src="DesktopModules/MVC/AdvancedProductSearchMVC/Scripts/AdvancedProductSearch.js"></script>
    

    A高级产品搜索.js

     aps = angular.module('APSApp', []);
    aps.controller('apsCtl',
        function(APSService, Features, $scope, $http) {
            alert("calling factory");
            $scope.searchTerms = [];
            APSService.getAPS(successFunction, failureFunction);
    
            successFunction = function(data) {
                alert("success");
                $scope.searchTerms = data;
            };
    
            failureFunction = function(data) {
                alert("failure");
            };
        });
    
    aps.factory('APSService',
        function($http) {
            alert("getting factory");
            return {
                getAPS: function(onSuccess, onFailure) {
                    //var APSService = {};
                    $http.get('/Desktopmodules/MVC/AdvancedProductSearchMVC/AdvancedProductSearch/GetAPS').success(onSuccess).error(onFailure);
                }
            };
        });
    

    当然,没用。例如,我的控制器从不被呼叫,我也不知道自己在做什么。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Sajeetharan    6 年前

    在脚本中重命名模块名并添加一个空的依赖项,如下所示

      angular
            .module('APSApp',[])
            .controller('apsCtl', apsCtl)
        ;
    
        2
  •  0
  •   Chris    6 年前

    在阅读了几个小时的文档和示例以及大量的测试之后,它现在开始工作了:

    var aps = angular.module("APSApp", []);
    aps.config(function($httpProvider) {
        $httpProvider.defaults.transformRequest = function(data) {
            return data !== undefined ? $.param(data) : null;
        };
    });
    
    aps.factory('SearchTerms', 
        function($http) {
            return {
                getSearchTerms: function(onSuccess, onFailure) {
                    const rvtoken = $("input[name='__RequestVerificationToken']").val();
                    $http({
                        method: "post",
                        url: "/DesktopModules/MVC/AdvancedProductSearchMVC/AdvancedProductSearch/GetAPS",
                        headers: {
                            "ModuleId": moduleId,
                            "TabId": tabId,
                            "RequestVerificationToken": rvtoken
                        }
                    }).success(onSuccess).error(onFailure);
                }
            };
        });
    
    aps.controller('APSCtl',
        function(SearchTerms, $scope) {
                $scope.searchTerms = [];
                successFunction = function(data) {
                    $scope.searchTerms = data;
                    console.log($scope.searchTerms);
                };
    
                failureFunction = function(data) {
                    console.log('Error' + data);
                };
                SearchTerms.getSearchTerms(successFunction, failureFunction);
        });