TypeError:无法读取属性' split'未定义的

时间:2016-02-02 04:05:08

标签: javascript angularjs

这是我的HTML文件。当我运行HTML页面时,它显示错误,'无法读取属性'拆分'未定义'

<!DOCTYPE html>
      <html>
            <head>
                <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script>

                <script>
                     var appModule=angular.module('appModule',[]);
                     appModule.filter('removeDashes',function(){
                         return function(text){
                             if(text!==undefined){
                                 return text.split('-').join(' ');
                             }
                         }
                     });
                     appModule.controller('someCTRL',function($scope){
                     });
                </script>
             </head>

             <body ng-app="appModule" ng-controller="someCTRL">
            <input type="text" model="someDashedText">
            <p>
                {{someDashedText | removeDashes}}
            </p>
        </body>
    </html>

3 个答案:

答案 0 :(得分:2)

if(text!==undefined){
                             return text.split('-').join(' ');
                         }

在我看来,上述条件应替换为以下代码

if(text){
                             return text.split('-').join(' ');
                         }

此条件检查所有已定义的,非空和非空字符串。

希望这有帮助。

答案 1 :(得分:0)

ng =&gt;中缺少<input type="text" model="someDashedText"> <input type="text" ng-model="someDashedText">

不确定此处是否需要'严格不等于'!==运算符......,您可能只是检查是否有任何内容if(text)

以下是Plunker

答案 2 :(得分:0)

我做了一个小代码更改并为过滤器创建了一个单独的模块,并在&#39; appModule&#39;中使用。

你必须使用&#34; ng-model&#34;在输入中。

这是工作脚本。

&#13;
&#13;
function onChange(arg) {
                    var selected = $.map(this.select(), function(item) {
                        return $(item).text();
                    });

                    console.log("Selected: " + selected.length + " item(s), [" + selected.join(", ") + "]");
                }

                function onDataBound(arg) {
                  console.log(arg);
                    console.log("Grid data bound");
                }

                function onDataBinding(arg) {
                    console.log(arg);
                    console.log("Grid data binding");
                }

                $(document).ready(function () {
                    $("#grid").kendoGrid({
                        dataSource: {
                            transport: {
                                read: {
                                    url: "//demos.telerik.com/kendo-ui/service/Products",
                                    dataType: "jsonp"
                                }
                            },
                            pageSize: 20
                        },
                        height: 350,
                        change: onChange,
                        dataBound: onDataBound,
                        dataBinding: onDataBinding,
                        selectable: "multiple cell",
                        pageable: true,
                        sortable: true,
                        columns: [
                            {
                                field: "ProductName",
                                title: "Product Name"
                            },
                            {
                                field: "UnitPrice",
                                title: "Unit Price",
                                format: "{0:c}"
                            },
                            {
                                field: "UnitsInStock",
                                title: "Units In Stock"
                            }
                        ]
                    });
                });
&#13;
&#13;
&#13;