В некоторых случаях документация AngularJs предполагает использование eval()
во время цикла $digest
, и в некоторых случаях нам предлагается использовать parse()
во время цикла $digest
? Может ли кто-нибудь дать хороший пример, когда в цикле $digest
мы должны использовать $eval()
и $parse()
, соответственно?
ответ
$parse
принимает угловое выражение и возвращает функцию, которая представляет это выражение.
$eval
принимает угловое выражение, оценивает его и возвращает фактический результат этого выражения.
Вы можете думать об этом, как это (это псевдо-код примера, чтобы показать, что я имею в виду, что это не так, как $parse
на самом деле работает):
function $parse(expression) {
return function() {
return $eval(expression);
}
}
$ синтаксического анализа используется для создания функции на основе определенные объекты/выражения, например:
var getter = $parse('user.name');
var setter = getter.assign;
var context = {user:{name:'angular'}};
var locals = {user:{name:'local'}};
expect(getter(context)).toEqual('angular');
setter(context, 'newValue');
expect(context.user.name).toEqual('newValue');
expect(getter(context, locals)).toEqual('local');
Просто с $ синтаксический вы сможете создать OO объекта с Getter, сеттер, подробности приведены в https://docs.angularjs.org/api/ng/service/ $ разобрать и Источник: https://github.com/angular/angular.js/blob/master/src/ng/parse.js#L1678.
$ Eval для получения результата на основе выражения:
var scope = ng.$rootScope.Scope();
scope.a = 1;
scope.b = 2;
expect(scope.$eval('a+b')).toEqual(3);
expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3);
Интересный факт заключается в том, что $ Eval использует $ разобрана, чтобы создать функцию $eval implementation:
$eval: function(expr, locals) {
return $parse(expr)(this, locals);
},
Это связано к тому же, если я правильно понимаю синтаксический код $ parse, этот синтаксический анализ проверяет, какое выражение и контекст (область) у вас есть. В основном, $ Eval является сокращенным использование что-то вроде (вместо того, чтобы делать это каждый раз, когда за $ области объекта в контроллере, например):
var getter = $parse("a");
var setter = getter.assign;
scope.a = 1;
expect(getter(scope)).toEqual(1);
- 1. В чем разница между angularjs и dust.js?
- 2. AngularJS $ parse/scope. $ Eval выражение
- 3. разница между $ и $$ в angularjs
- 4. в AngularJS, в чем разница между наследованием и расширением?
- 5. В чем разница между ng-include и ngroute в angularjs
- 6. В чем разница между $ scope.myScope = function() и функцией() в AngularJS
- 7. В чем разница между обещанием и привязкой в AngularJS?
- 8. В чем разница между $ scope и $ rootscope в angularjs?
- 9. В чем разница между src и ng-src в AngularJS?
- 10. В чем разница между нг-MINLENGTH и MINLENGTH в angularjs
- 11. Разница между $ window.location.reload() и $ route.reload() в angularjs
- 12. Разница между $ scope и scope в angularjs
- 13. разница между $ cookiestore и $ cookies в angularjs
- 14. AngularJS: В чем разница между $ log и console.log?
- 15. Разница между $ interval и setInterval в AngularJs
- 16. В чем разница между Parse Javascript и Parse Cloud-Code?
- 17. В чем разница между window.location и $ location.path?
- 18. В чем разница между init() и window.init()?
- 19. Angularjs: eval() в службе
- 20. разница между $ q.when и $ q.defer в angularJS
- 21. В чем разница между различными способами указания контроллера в AngularJS?
- 22. В чем разница между этими методами начальной загрузки в angularJs?
- 23. В чем разница между Convert and Parse?
- 24. в R, в чем разница между get ("abc") и eval (parse (text = "abc"))
- 25. В чем разница между ~ и^в bower.json?
- 26. В чем разница betwen! $ Scope.variableName и $ scope.variableName В AngularJS
- 27. AngularJS Функция, разница между параметром и без '$'
- 28. AngularJS: Разница между шаблоном и представлением?
- 29. В чем разница между SystemJS и CommonJS
- 30. В чем разница между $ state и $ stateProvider?
Спасибо за reply.Also Я хотел бы знать, как $ Eval и $ parse играет роль в цикле $ digest, например, когда мы используем эти сервисы в цикле $ digest, когда у нас есть выражение – Kalaivani
@ Kalaivani. Я рекомендую посмотреть [источник '$ digest'] (https: // github. com/angular/angular.js/blob/master/src/ng/rootScope.js # L723) для более подробных исследований. Объяснение того, что подробно слишком велико для StackOverflow – LionC