angularjs怎么初始化一个函数

 我来答
龙氏风采
推荐于2018-04-22 · 知道合伙人互联网行家
龙氏风采
知道合伙人互联网行家
采纳数:5849 获赞数:12817
从事互联网运营推广,5年以上互联网运营推广经验,丰富的实战经

向TA提问 私信TA
展开全部
  入口angularInit函数 (Angular.js L1278)
  function angularInit(element, bootstrap) {
  var appElement,
  module,
  config = {};
  // The element `element` has priority over any other element
  forEach(ngAttrPrefixes, function(prefix) {
  var name = prefix + 'app';
  if (!appElement && element.hasAttribute && element.hasAttribute(name)) {
  appElement = element;
  module = element.getAttribute(name);
  }
  });
  forEach(ngAttrPrefixes, function(prefix) {
  var name = prefix + 'app';
  var candidate;
  if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\:') + ']'))) {
  appElement = candidate;
  module = candidate.getAttribute(name);
  }
  });
  if (appElement) {
  config.strictDi = getNgAttribute(appElement, "strict-di") !== null;
  bootstrap(appElement, module ? [module] : [], config);
  }
  }
  其中,var ngAttrPrefixes = [‘ng-‘, ‘data-ng-‘, ‘ng:’, ‘x-ng-‘];
  先找到html文档中含有ng-app(或者data-ng-app, ng:app, x-ng-app)属性的元素。作为初始化的根module元素,注意此处html文档只能有一个这种元素,如果有多个,则angular也仅仅自动取一个而已。
  然后托管给bootstrap函数。
  bootstrap函数 (Angular.js L1357)
  function bootstrap(element, modules, config) {
  if (!isObject(config)) config = {};
  var defaultConfig = {
  strictDi: false
  };
  config = extend(defaultConfig, config);
  var doBootstrap = function() {
  element = jqLite(element);
  if (element.injector()) {
  var tag = (element[0] === document) ? 'document' : startingTag(element);
  //Encode angle brackets to prevent input from being sanitized to empty string #8683
  throw ngMinErr(
  'btstrpd',
  "App Already Bootstrapped with this Element '{0}'",
  tag.replace(/</,'<').replace(/>/,'>'));
  }
  modules = modules || [];
  modules.unshift(['$provide', function($provide) {
  $provide.value('$rootElement', element);
  }]);
  if (config.debugInfoEnabled) {
  // Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.
  modules.push(['$compileProvider', function($compileProvider) {
  $compileProvider.debugInfoEnabled(true);
  }]);
  }
  modules.unshift('ng');
  var injector = createInjector(modules, config.strictDi);
  injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',
  function bootstrapApply(scope, element, compile, injector) {
  scope.$apply(function() {
  element.data('$injector', injector);
  compile(element)(scope);
  });
  }]
  );
  return injector;
  };
  var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;
  var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
  if (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {
  config.debugInfoEnabled = true;
  window.name = window.name.replace(NG_ENABLE_DEBUG_INFO, '');
  }
  if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {
  return doBootstrap();
  }
  window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');
  angular.resumeBootstrap = function(extraModules) {
  forEach(extraModules, function(module) {
  modules.push(module);
  });
  return doBootstrap();
  };
  if (isFunction(angular.resumeDeferredBootstrap)) {
  angular.resumeDeferredBootstrap();
  }
  }
  bootstrap()函数主要功能是内部的dobootstrap()函数 ;
  1,待加载的modules[],加入$rootElement,即包含有ng-app属性的元素;
  modules.unshift(['$provide', function($provide) {
  $provide.value('$rootElement', element); //注入到内部的instanceInjector,后续讲解[*]
  }]);
  2, modules[],加入ng这个加载模块 (前面笔记1中讲过,两个重要的内部Module之一)
  3, 开始调用createInjector函数执行
  var injector = createInjector(modules, config.strictDi);
  injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',
  function bootstrapApply(scope, element, compile, injector) {
  scope.$apply(function() {
  element.data('$injector', injector);
  compile(element)(scope);
  });
  }]
  );
张艳歌520
2018-04-22 · TA获得超过1.3万个赞
知道小有建树答主
回答量:4714
采纳率:70%
帮助的人:264万
展开全部
连续批量赋值可以用memsetcharA[20];memset(A[2],'A',5);//对数组A第3个元素开始的连续5个元素统一赋值为字符'A'如果每个需要赋值的元素都不同,就只能一个个赋值了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式