当我尝试评估下面的json表单时,它给了我一个错误 –
eval("{form: 'form',nameToMatch: 'password1'}")
为什么上述表格无效?
但是以下工作正常 –
eval("{form: 'form'}")
我试图将上面的json作为字符串传递,作为指令的param输入.
下面是html –
<input type="password" name="password2" ng-model="user.confirmPassword" placeholder="Confirm Password" match="{form: 'form',nameToMatch: 'password1'}" required="required"/>
谢谢,
穆尔塔扎
在你的json周围放置parens:
原文链接:https://www.f2er.com/angularjs/143353.htmleval("({form: 'form',nameToMatch: 'password1'})")
虽然看起来不是一个有角度的问题.不确定你要做什么:
无论如何,要将json传递给指令,有很多方法可以做到这一点.我不确定你为什么要这样做,而不仅仅是传递一个对象.
通过json可以做很多方法……
>从您的属性对象:
app.directive('foo',function () { return function(scope,element,attrs) { var obj = eval('(' + attrs.foo + ')'); }; });
哪里
<div foo="{'test':'wee'}"></div>
>来自孤立的范围:
app.directive('foo',function () { return { restrict: 'E',scope: { 'jsonIn' : '@' },link: function(scope,attrs) { var obj = eval('(' + scope.jsonIn + ')'); }; }; });
哪里
<foo json-in="{'test':'wee'}"></foo>
但是,如果可以的话,最好不要不惜一切代价避免使用本地eval.在几乎所有情况下你都可以.如果你有一些数据只是将它放在一个范围参数的对象中,并通过隔离范围上的双向属性或名称传递它,并对其进行角度$eval.
编辑:传递一个对象…
您可以在隔离范围上使用双向绑定:
app.directive('foo',function (){ return { restrict: 'E',scope: { 'data' : '=' },elem,attrs) { console.log(scope.data); } }; });
哪里
<foo data="{ test: 'wee' }"></foo>
这样做真的很酷,如果你使用的是scoped属性,它会双向更新:
app.controller('MainCtrl',function($scope) { $scope.bar = { id: 123,name: 'Bob' }; });
哪里
<foo data="bar"></foo>
我希望有所帮助.