我已经得到了下面的模板:更新模型值
<select
id="someSelect"
ng-model="component.picture"
ng-controller="someChildController"
size="12"
ng-options="img.url as img.name for img in image.list | filter:img.filter">
</select>
的重要组成部分,是NG-模型。我想让代码尽可能重用,所以请将此模型视为随时可能更改的模型。问题是,当我无法直接更新$ scope.component.picture时,如何更改控制器的值?
是否有某种方式可以获取元素的模型对象,不管它是什么对象名称?
编辑:
我可能还没有明确。考虑这种情况,在应用程序的不同位置使用相同的模板,但使用改变的模型(因此,没有component.picture)。但它仍然包含在处理模型更新的子控制器中。我无法直接拨打component.picture,因为我无法确定它是ng-model中的一个。
如果一切失败,我可能需要做一些事情,如:
var _el = angular.element('#someSelect');
var path = _el.attr('ng-model').split('.');
var model = $scope;
var lastIndex = -1;
path.forEach(function(p, i) {
if(typeof model[p] === 'object') {
model = model[p];
lastIndex = i;
}
else return false;
});
model[path[lastIndex+1]] = "someNewValue";
但它很丑陋,所以我想知道,如果有更好的方法来做到这一点。
使用具有特定范围的指令 –