注入$ http后,代码不会在angular.js中显示该表

时间:2016-05-01 10:11:17

标签: angularjs

我是anular.js的初学者。我正在尝试编写一个代码,在按钮单击时添加和删除表中的行,一旦广告用户点击createdelivery按钮,我想将数据作为JSON对象发送到服务器。

但是当我按照以下方式注入$ http时,

var app = angular.module("createDelivery", []);
app.controller("MyController", ['$scope', 'http', function($scope, $http)

它也不会创建表。

请帮我解决这个问题。

<html>
  <head>

    <title>Add Rows</title>


    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
    <script>
    var app = angular.module("createDelivery", []);
    app.controller("MyController", ['$scope', 'http', function($scope, $http) {
        $scope.deliveryDetails = [
            {
                'fname':'Muhammed',
                'lname':'Shanid',
                'email':'shanid@shanid.com'
            },

            {
                'fname':'Roy',
                'lname':'Mathew',
                'email':'roy@roy.com'
            }];

            $scope.addNew = function(cdDetails){
                $scope.deliveryDetails.push({ 
                    'fname': "", 
                    'lname': "",
                    'email': "",
                });
            };

            $scope.remove = function(){
                var newDataList=[];
                $scope.selectedAll = false;
                angular.forEach($scope.deliveryDetails, function(selected){
                    if(!selected.selected){
                        newDataList.push(selected);
                    }
                }); 
                $scope.deliveryDetails = newDataList;
            };

        $scope.checkAll = function () {
            if (!$scope.selectedAll) {
                $scope.selectedAll = true;
            } else {
                $scope.selectedAll = false;
            }
            angular.forEach($scope.deliveryDetails, function(cdDetails) {
                cdDetails.selected = $scope.selectedAll;
            });
        };    
        $scope.getData = function(cdDetails) 
        {
                alert("Check");
                var jsonString;
                jsonString = angular.toJson(cdDetails);
                //JSON.stringify(jsonString);                               
                $http
                    ({
                        url: "/scheduler/createDelivery",
                        dataType: 'json',
                        method: 'POST',
                        data: jsonString

                    }).success(function(response) {
                        alert("success : : "+jsonString);
                        $scope.value = response;
                    }).error(function(error) {
                        alert("error::"+error);
                    });

                //window.location.reload();  
                //document.write("\nString value "+jsonString);                 
        };  

    }]);
    </script>
  </head>

  <body ng-app="createDelivery" ng-controller="MyController">     
    <div class="container">
        <div class="row">
            <div class="col-md-12">
                <div class="panel panel-default">
                    <div class="panel-body">
                        <form ng-submit="addNew()">
                            <table class="table table-striped table-bordered">
                                <thead>
                                    <tr>
                                        <th><input type="checkbox" ng-model="selectedAll" ng-click="checkAll()" /></th>
                                        <th>Firstname</th>
                                        <th>Lastname</th>
                                        <th>Email</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr ng-repeat="cdDetails in deliveryDetails">
                                        <td>
                                            <input type="checkbox" ng-model="cdDetails.selected"/></td>
                                        <td>
                                            <input type="text" class="form-control" ng-model="cdDetails.fname" required/></td>
                                        <td>
                                            <input type="text" class="form-control" ng-model="cdDetails.lname" required/></td>
                                        <td>
                                            <input type="email" class="form-control" ng-model="cdDetails.email" required/></td>
                                    </tr>
                                </tbody>
                            </table>

                            <div class="form-group">
                                <input ng-hide="!deliveryDetails.length" type="button" class="btn btn-danger pull-right" ng-click="remove()" value="Remove">
                                <input type="submit" class="btn btn-primary addnew pull-right" value="Add New">
                                 <button type="button" name = "createDelivery"class="col-sm-2 btn btn-primary" style="width:25%" ng-click="getData(cdDetails);">Create Delivery</button>

                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

public class Main_page extends AppCompatActivity {

    private static final long RIPPLE_DURATION = 250;
    private Toolbar toolbar;
    private RelativeLayout root;
    private ImageView menu_image, toolbar_refresh;
    private RecyclerView main_recyclerView;
    private MainAdapter_loadMore mAdaper;
    private List<MainDataModel> dataModels = new ArrayList<MainDataModel>();
    protected Handler handler;
    private RelativeLayout loadLayout;
    private LinearLayoutManager mLayoutManager;
    private int pageCount = 1;
    String ServerAddress = ServerIP.getIP();
    private Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_page);
        if (!EventBus.getDefault().isRegistered(this)) {
            EventBus.getDefault().register(this);
        }
        // Initializing
        handler = new Handler();
        context = getApplicationContext();
        toolbar = (Toolbar) findViewById(R.id.main_toolbar);
        mLayoutManager = new LinearLayoutManager(this);
        loadLayout = (RelativeLayout) findViewById(R.id.main_empty_layout);
        toolbar_refresh = (ImageView) toolbar.findViewById(R.id.toolbar_update);
        // Toolbar
        if (toolbar != null) {
            setSupportActionBar(toolbar);
            getSupportActionBar().setTitle(null);
        }
        // Load First Data
        LoadData();
        // Menu
        root = (RelativeLayout) findViewById(R.id.main_root);
        View guillotineMenu = LayoutInflater.from(this).inflate(R.layout.menu_layout, null);
        root.addView(guillotineMenu);
        menu_image = (ImageView) toolbar.findViewById(R.id.toolbar_logo);
        new GuillotineAnimation.GuillotineBuilder(guillotineMenu, guillotineMenu.findViewById(R.id.menu_layout_image), menu_image)
                .setStartDelay(RIPPLE_DURATION)
                .setActionBarViewForAnimation(toolbar)
                .setClosedOnStart(true)
                .build();
        // RecyclerView and setData
        main_recyclerView = (RecyclerView) findViewById(R.id.main_recycler);
        main_recyclerView.setHasFixedSize(true);
        main_recyclerView.setLayoutManager(mLayoutManager);
        mAdaper = new MainAdapter_loadMore(this, main_recyclerView, dataModels);
        main_recyclerView.setAdapter(mAdaper);
        // Load More data
        mAdaper.setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore() {
                dataModels.add(null);
                mAdaper.notifyItemInserted(dataModels.size() - 1);
                LoadMoreData(pageCount);
            }
        });

        // Refresh Data
        toolbar_refresh.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getApplicationContext(), PostShow_page.class));
            }
        });
    }

    @Subscribe
    public void onEvent(List<MainDataModel> mainInfoModels) {
        if (dataModels.size() > 0) {
            dataModels.remove(dataModels.size() - 1);
            mAdaper.notifyItemRemoved(dataModels.size());
            mAdaper.setLoaded();
        }

        mAdaper.add(mainInfoModels);
        mAdaper.notifyDataSetChanged();
        pageCount++;

        if (dataModels.isEmpty()) {
            main_recyclerView.setVisibility(View.GONE);
            loadLayout.setVisibility(View.VISIBLE);

        } else {
            main_recyclerView.setVisibility(View.VISIBLE);
            loadLayout.setVisibility(View.GONE);
        }
    }

    private void LoadData() {
        MainDataInfo dataInfo = new MainDataInfo();
        // here getMainDataInfo() should return the server response
        dataInfo.getMainDataInfo(this);
    }

    private void LoadMoreData(int pageNumber) {
        MainDataInfo_loadMore dataInfo_loadMore = new MainDataInfo_loadMore();
        // here getMainDataInfo() should return the server response
        dataInfo_loadMore.getMainDataInfo_loadMore(this, pageNumber);
    }
}

代码中的一个错误就是上面。改变它并尝试。你必须注入$ http