在angularjs中转换$ .param

vin*_*tot 22 javascript url jquery param angularjs

在我使用JQuery之前,我使用它来发送带参数的URL

window.location = myUrl + $.param({"paramName" : "ok","anotherParam":"hello"});
Run Code Online (Sandbox Code Playgroud)

但是对于angularjS,这不起作用

$scope.myButton = function() {
    $window.location.open = myUrl + $.param({"paramName" : "ok","anotherParam":"hello"});
};//Error: $ is not defined
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我在angularJs中做到这一点

Raf*_*jac 36

有一个角度内置的序列化器,模仿$ .param(): $ httpParamSerializerJQLike

  • 请注意,自Angular 1.4以来,`$ httpParamSerializer`和`$ httpParamSerializerJQLike`可用 (7认同)

Sud*_*oti 12

如果您尝试创建像$ .param()那样的数据的序列化表示,

function serializeData( data ) { 
    // If this is not an object, defer to native stringification.
    if ( ! angular.isObject( data ) ) { 
        return( ( data == null ) ? "" : data.toString() ); 
    }

    var buffer = [];

    // Serialize each key in the object.
    for ( var name in data ) { 
        if ( ! data.hasOwnProperty( name ) ) { 
            continue; 
        }

        var value = data[ name ];

        buffer.push(
            encodeURIComponent( name ) + "=" + encodeURIComponent( ( value == null ) ? "" : value )
        ); 
    }

    // Serialize the buffer and clean it up for transportation.
    var source = buffer.join( "&" ).replace( /%20/g, "+" ); 
    return( source ); 
}
Run Code Online (Sandbox Code Playgroud)

并将其用于数据序列化

  • 如果数据包含嵌套对象,则此函数将不起作用,即:如果数据类似于{foo:[{id:1,val:'test'},{id:2,val:'test2'}],bar :{test:'myTest'}}它不起作用 (3认同)
  • 不要重新发明轮子.如果jQuery已实现,请使用它.混合这些库不要太吓人.[AngularJS不会取代jQuery.](http://stackoverflow.com/a/23606512/878514) (3认同)

小智 8

AngularJs的核心有jquery lite,因此你可以使用angular.element.param()而不是$ .param()

  • .param()不包含在jQLite中:https://docs.angularjs.org/api/ng/function/angular.element (10认同)
  • 如果你包含jQuery,这可能会工作,因为angular会使用它,但是使用纯Angular(jQuery Lite)会抛出TypeError:angular.element.param不是函数 (3认同)
  • 这是最好的答案.编写已经存在的代码并不是一个好主意. (2认同)
  • 不行.`Uncaught TypeError:angular.element.param不是函数(...)` (2认同)

归档时间:

查看次数:

33177 次

最近记录:

8 年,8 月 前