我正试图使用$parse
来获得我所需的结果。
这是我的例子。检查script.js
文件
我想解析一个表达式,但我得到错误。我如何解决这类数据?
我的代码
scope.data = {name:{_en:"username", _ar:'مفقود '}}
// set variable in scope like scope.name_en = scope.data._en, scope.name_ar = scope.data._ar
for(var i in scope.data) for(var j in scope.data[i]) scope[i+j] = scope.data[i][j];
scope.messages2 = [{code:200, msg_en:"{{name_en}} is missing.", msg_ar:"مفقود {{name_ar}}"}];
scope.finalMegs = [];
for( var i in scope.messages2) {
var obj = {};
for(var j in scope.messages2[i]){
if(j == 'code') continue;
console.log(scope.$eval(scope.messages2[i][j]) );
obj[j] = $parse(scope.messages2[i][j])
}
/*
required object is {msg_en = "username is missing.", msg_ar:"مفقود مفقود "}
*/
scope.finalMegs.push(obj);
}
console.log(scope.finalMegs);
谢谢。
您的消息语法不正确,因此$parse
或$eval
无法解析消息。你应该这样写:
scope.messages2 = [
{
code:200,
msg_en:"name_en + ' is missing.'",
msg_ar:"'مفقود ' + name_ar"
}
];
然后,如果你想获得对象与已经格式化的消息,你应该调用$parse
函数以这种方式:
obj[j] = $parse(scope.messages2[i][j])(scope);
因为$parse
将角表达式转换为函数,你应该用scope
调用它来获得预期的结果。
但是根据您的情况,我认为您也可以将这些行替换为:
obj[j] = scope.$eval(scope.messages2[i][j]);
结果将是相同的。
柱塞示例。(我已经重新格式化了你的例子一点)
请再看一下使用范围的例子。