2017-02-13 33 views
1

我正在从一个JSON文件中提取大量问题的项目。使用字符串作为范围属性名称在视图中的角度

问题的格式各不相同,但问题是由滑块问题类型引起的。

我运行一个HTTP请求来获取JSON数据并将其分配给一个名为'questions'的作用域。然后我在视图中重复问题,如果(在这种情况下)问题类型是“滑块”,我输出HTML。

问题是滑块使用插件和范围变量的选项。因为我无法控制的问题,我动态创建范围:

angular.forEach($scope.questions, function(question) { 
    $scope[question.definedScopeName] = { 
     // set up the slider config. 
    }; 
}); 

的JSON问题包含要使用的范围,以便在这个例子中“sliderOne”定义的名称。

所以......在我看来,我输出NG重复内滑块:

<rzslider 
    class="question__slider" 
    rz-slider-model="question.definedScopeName.value" 
    rz-slider-options="question.definedScopeName.options"> 
</rzslider> 

这里的问题是,要正确设置模型范围我使用从问题范围的数据,因此它是一个字符串。

无论如何,我可以告诉Angular,我真的想将模型设置为名为$ scope.'the defined scope name'的范围。

谢谢!

+0

你的问题似乎是一个字符串因此问题。<>无法完成 –

+0

@VinodLouis问题是一个名为“definedScopeName”字符串的对象。我想将模型设置为同名的范围变量 – Lovelock

+1

请提供一个[mcve] – charlietfl

回答

2

this关键字

<!-- 
<rzslider 
    class="question__slider" 
    rz-slider-model="question.definedScopeName.value" 
    rz-slider-options="question.definedScopeName.options"> 
</rzslider> 
--> 

<!-- Use bracket notation --> 
<rzslider 
    class="question__slider" 
    rz-slider-model="this[question.definedScopeName].value" 
    rz-slider-options="this[question.definedScopeName].options"> 
</rzslider> 

在角表达式使用括​​号标记,所述this关键字结合至角表达的范围。

+0

正当我虽然这是不可能的!非常感谢你。 – Lovelock

相关问题