如何让Angular使用scope作为数据模型来显示变量的字符串呢?

How can I get Angular to display the string of a variable using scope as a data model?

本文关键字:变量 显示 字符串 数据模型 Angular 使用 scope      更新时间:2023-09-26
$scope.headers = {score: "test", gaps:"test2", strand:"test3"};
        if (line.lastIndexOf("Score", 0) === 0 ) {
            $scope.headers.score = line;       }

当我输入{{headers时,我的视图现在显示"test"。HTML中的score}}。是否有办法得到{{headers。通过向作用域附加变量来显示字符串?

的例子:(var a = " blahkaldl ";因此,{{头。Score}}显示"blanhkaldl")

…我打了个喷嚏,按了个键,还按了空格键,提前发了。

这里有很多很多的解决方案。

你可能需要更具体地说明你真正想要完成的是什么。
你不需要给我们所有的东西,但是解决方案将取决于,我猜,你希望改变什么,你在哪里声明逻辑,以及你在模板中还有什么。

在你的模板中,你可以使用ng-if、ng-show或ng-switch来根据你是否想要改变元素的结构来改变元素:

$scope = {
    isOpen : false,
    article : { author : "", date : "", title : "", content : "" }
};

 <article >
     <h1>{{ article.title }}</h1>
     <span ng-if="!isOpen" ng-click="isOpen = true">...show</span>
     <p ng-if="isOpen">{{ article.content }}</p>
 </article>

或者,你可以在插值中使用三元:

<p>{{ isOpen ? article.content : '...show' }}</p><button ng-click="isOpen = !isOpen">toggle</button>

当你的模型改变时,Angular也会更新你的视图。只要你在Angular内部进行更改(在Angular $http调用之后,或者在Angular $timeout中,或者当用户触发ng-click时,等等),你就不需要做任何其他事情;Angular会检查你所有的作用域,看看发生了什么变化,并更新你的视图。

如果你在Angular之外做更改:

xhr.onload = ...  
button.onclick ...  
window.onresize ...  
setTimeout ...
在你的事件被触发后,你应该调用

$scope.$apply(function ($scope) { /* make changes in here */ });

$timeout(function ($scope) { /* change here, and Angular will start an $apply if one isn't already running */ });

"$apply"是实际运行它找到的所有更改并更新系统中所有连接位的阶段。

不调用$scope.$apply的原因是$apply周期有可能已经在运行中。
对Angular来说,明智的做法可能是将你的更改偷偷地放入$apply,或者在它完成后立即安排另一个$apply,以包含你的新更改…

…相反,它会抛出一个错误,告诉你"apply已经在运行"。
如果你正在构建Angular,这对调试是有意义的,但当你只想把东西连接在一起时,这就没意义了…
所以请使用$timeout。

但是仅仅在你的函数作用域中有一个var并不能解决这个问题。
它必须是你的$scopecontroller或模板中的东西(如果你在模板中提到的值不在你的作用域中,Angular会把它们放在你的作用域中)。

驱动Angular的黑魔法很少;它的大部分只是遍历你所有的$作用域,并在一个循环(或一组循环)中检查每个作用域上的每个键/值["消化"阶段],然后更新所有其他正在监视这些变化的作用域/视图["应用"阶段],然后可能会启动另一轮的变化,等等,直到Angular可以在不改变任何值的情况下遍历每个$作用域。

$timeout()是当你在Digest/Apply周期之外改变了一些东西,而且它不是Angular理解的方法(ng-*、$http、$q等),所以Angular不会接收它,而你想给Angular一个提示,告诉它发生了一些重要的事情。