javascript - 在 angular.js 中渲染逻辑?

标签 javascript angularjs

我有三个模型属性年份、指标、地理来控制数据可视化的呈现。

根据此模型中的更改,我希望能够控制可视化的渲染:

  //Pseudo code
  watch function ( year, indicator, geography ) {
     if(geography.previous == a && geography.current == b){
        renderA()
     }
     if(geography.previous == a && year == 1950){
        renderB()
     }
  }

如上面的示例所示,我希望能够将先前值与当前值以及模型更改的任意组合进行比较,以确定渲染。

我如何在 Angular 中进行设置?
(可能包括模型服务并观察多个属性......)

最佳答案

如果你想观察多个属性,那么你可以用对象包装它们并观察对象的深层变化

$scope.obj = {
   year : ...
   indicator : ...
   geography : ...
}
$scope.$watch('obj', function(newValue, oldValue) {
   // your logic dependent on changes
}, true);

注意 $watch 函数的第三个 true 参数。它负责观察深层变化。

我不知道你想要渲染什么,但如果这些是完全不同的模板那么你可以使用 ngSwitch .

我不确定使用某种服务是否是正确的选择。我倾向于某种指令。主要是因为服务没有范围。您可以用指令包装所有内容,并将数据传递给执行渲染和逻辑的指令。

关于javascript - 在 angular.js 中渲染逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918552/

相关文章:

javascript - 将 JQuery 脚本与外部文件中的选择器分开不起作用?

javascript - firefox/webkit 的 javascript 是否存在内存泄漏? (IE 除外)

node.js - AngularJS 和 ExpressJS 路由问题?

angularjs - ng-repeat 叠瓦结构的第一个元素

javascript - 检测 HTML 表单提交

javascript - jQuery keyup 事件不设置 event.shiftKey

javascript - 在 Javascript 中用正则表达式替换竖线和逗号

javascript - 在所有其他 promise 之前等待 1 个 promise

javascript - 使用 ng-repeat 搜索后将 "checked"值保留到输入复选框 | Angularjs

javascript - Angular Directive(指令)和同位素