AngularJS -动态作用域
AngularJS - Dynamic scope fields
是否可以使用动态参数并设置其作用域值?
$scope.testFunc= function(fieldName){
$scope.fieldName = 'Test';
}
JSFiddle
var app = angular.module('myApp', []);
function myCtrl($scope, $parse) {
$scope.coolform = {};
$scope.testFunc = function(fieldName){
var model = $parse(fieldName);
model.assign($scope, 'test2');
}
}
或者你可以使用你自己的指令代替ng-click,并使用=
描述这里如何在angular指令中设置插值值?
您需要这样设置:
$scope.testFunc= function(fieldName){
$scope[fieldName] = 'Test';
}
如果你想这样嵌套:
fieldName.secondLevel
你可以使用:
$scope[fieldName][secondLevel]
或者你使用angular使用的regex解析器。(我不知道如何使用这个…)
编辑:从源代码复制的正则表达式:
//000011111111110000000000022222222220000000000000000000003333333333000000000000004444444444444440000000005555555555555550000000666666666666666000000000000000777777777700000000000000000008888888888
var NG_OPTIONS_REGEXP = /^'s*(['s'S]+?)(?:'s+as's+(['s'S]+?))?(?:'s+group's+by's+(['s'S]+?))?'s+for's+(?:(['$'w]['$'w]*)|(?:'('s*(['$'w]['$'w]*)'s*,'s*(['$'w]['$'w]*)'s*')))'s+in's+(['s'S]+?)(?:'s+track's+by's+(['s'S]+?))?$/
和用法:
var match;
if (!(match = optionsExp.match(NG_OPTIONS_REGEXP))) {
throw ngOptionsMinErr('iexp',
"Expected expression in form of " +
"'_select_ (as _label_)? for (_key_,)?_value_ in _collection_'" +
" but got '{0}'. Element: {1}",
optionsExp, startingTag(selectElement));
}
var displayFn = $parse(match[2] || match[1]),
valueName = match[4] || match[6],
keyName = match[5],
groupByFn = $parse(match[3] || ''),
valueFn = $parse(match[2] ? match[1] : valueName),
valuesFn = $parse(match[7]),
track = match[8],
trackFn = track ? $parse(match[8]) : null,
// This is an array of array of existing option groups in DOM.
// We try to reuse these if possible
// - optionGroupsCache[0] is the options with no option group
// - optionGroupsCache[?][0] is the parent: either the SELECT or OPTGROUP element
optionGroupsCache = [[{element: selectElement, label:''}]];
如您所见,它们使用$parse来获取所选表达式的值,如fieldName.secondLevel
相关文章:
- 将变量动态添加到每个控制器的作用域
- AngularJS观察指令属性表达式,动态继承作用域
- 如何创建作用域的动态、基于实例的对象文字
- JavaScript/循环混淆中的动态作用域与词法作用域
- 通过json动态绑定作用域到ng模型
- 如果在transclusion之后添加,为什么指令下的动态元素具有错误的作用域
- 尝试使在专用作用域中动态更改的变量全局化
- 将泛型函数动态关联到对象属性时的作用域.(模块模式)
- 作用域和将参数传递给动态创建的事件处理程序时出现问题
- 使用指令作用域变量呈现的动态模板
- 作用域的动态变量名称
- 从作用域绑定的动态控制器
- AngularJs的ng-href动态链接,作用域没有更新/工作
- 动态添加或复制指令不会从父作用域获取变量值
- AngularJS如何用变量动态更新部分作用域
- Angular中的动态作用域变量名
- AngularJS -动态作用域
- 动态更新文本框后更新作用域值
- Angular的$compile / $controller没有绑定动态HTML的作用域
- 如何为音频文件数组的每个索引动态绑定src值到指令作用域变量