angularjs - ng-model没有为我设置默认值

时间:2016-02-01 16:03:03

标签: javascript angularjs

ng-model在这里设置,所以我可以将过滤器传递给我的函数并获取所有用户选择。我以为我也可以用它来预先填充/默认数据。它不起作用。这是我的控制者:

/**
 * Export PDF with chart
 * @summary Export PDF with Chart.
 * @param queryName The query.
 * @param svg The SVG string
 * @return A response with a PDF file
 */
@POST
@Produces({"application/pdf" })
@Path("/{queryname}/export/pdf")
public Response exportPdfWithChart(
        @PathParam("queryname")  String queryName,
        @PathParam("svg")  @DefaultValue("") String svg)
{
    return exportPdfWithChartAndFormat(queryName, null, svg, null);
}

我有这样的HTML:

.controller('ListCtrl', [
    '$scope', '$filter', '$location', 'context', 'breeze', 'Service',
    function ($scope, $filter, $location, context, breeze, Service) {
        $scope.pageLoaded = true;
        $scope.lists = [];
        $scope.DDL1 = '';
        $scope.filter = {
            fromDate: '2015-05-01',
            toDate: '',
            sales: false            
        };

2 个答案:

答案 0 :(得分:3)

使用字符串

由于您使用input type="radio",请将filter.sales的类型设置为字符串,这应该有效

$scope.filter = {
    fromDate: '2015-05-01',
    toDate: '',
    sales: 'false'          
};

来自input type="radio" ng-model docs

  

选中时应设置ngModel表达式的值。   请注意,值仅支持字符串值,即范围模型   也需要成为一个字符串。如果您需要复杂的模型,请使用ngValue   (数字,对象,......)。

答案 1 :(得分:1)

您可以使用ng-checked of angularjs根据其他值预先填充单选按钮。

例如:

<td width="40%">                                    
  <input type="radio" name="sales" ng-model=vm.filter.sales > yes
  <input type="radio" name="sales" ng-model=vm.filter.sales ng-checked="true"> no
</td>

在上面的示例中,我直接将ng-checked值设置为true,但您也可以使用控制器变量将其设置为true或false。 有关详细信息,请查看文档@ https://docs.angularjs.org/api/ng/directive/ngChecked