【发布时间】:2014-09-19 19:33:38
【问题描述】:
我创建了一个 JSFiddle 来说明我的情况:http://jsfiddle.net/hLv27/
我有一组指令应该相互独立,但会根据属性(主题)提供的数据进行更新。我可以通过多次使用相同的指令来举例说明:
<my-directive topics="main.topicList"></my-directive>
<my-directive topics="main.staticTopicList"></my-directive>
<my-directive topics="main.topicList" update-on="some.event"></my-directive>
每个指令根据主题从服务器获取其数据:
-
在第一种情况下,我会使用
$watch,观察topics数组,并相应地获取新数据;$scope.$watch("topics", function (theTopics) { $scope.fetchData(theTopics); }); 在第二种情况下, 指令用固定数组初始化,我没有 之后需要更新它;
-
在第三种情况下,我会添加到每个 指令一个
update-on字符串,对应于一个广播 当topics数组改变时触发。if ($scope.updateOn) { $scope.$on($scope.updateOn, function (ev, tags) { $scope.fetchData(tags); }); }
问题是:使用$watch 还是$broadcast 会更好吗?
附录:有没有更好的方法来创建类似的指令? (例如,无需观看或广播)
【问题讨论】:
-
"一个原始的循环比较什么都不是。",
fetchData仅在数组更改时调用(topics最大长度 = 3) -
topicList是否会被初始化一次,之后不再更新,还是可以随时更改? -
根据列表中所选主题的变化(最多 3 个)
标签: angularjs rest angularjs-directive broadcast watch