现有 angularjs 问题俩枚
一.
通过 $http 加载了一篇文章,该文章有标题, 现想实现文章加载后将文章标题替换掉浏览器标题. html 结构如下
<!doctype html>
<html data-ng-app="app">
<head data-ng-controller="head">
<meta charset="utf-8"/>
<titlte data-ng-bind="title||'Document'"></title>
</head>
<body>
<p data-ng-controller="main">
<button data-ng-click="getPost()">GET POST</button>
<p data-ng-module="post">
<h2 data-ng-bind="post.title"></h2>
<article data-ng-bind="post.content"></article>
</p>
</p>
</body>
</html>
也就是 post 加载后浏览器标题和 post.title 显示一样.
已搜索过跨域通信的解决方案, 并且看到了 这里(AngularJS控制器controller如何通信?) , 这三种方法, 前俩种并部适合我当前这个结构, 因此使用第三种方式, 并且也是实现了同步, 但是致命的是需要通过一个触发(点击 等)才能够同步, so 其实直白了就是想问问怎么能够自动同步 而不是通过触发来同步.
二.
$scope 回调,
还拿这个加载文章来说, 比如加载的文章中有 pre 标签包裹的代码快, 在加载后, 要通过其他库来实现高亮, so 需要在数据绑定并且渲染完毕后来执行高亮操作. 但是并没有搜到什么解决方案.
自己也写了些, 俩中方案
第一种:
数据绑定后以后递归查询当前页面的所有 pre 标签, 找到后或者限定次数后 高亮 结束.
第二种:
window.setTimeout(function(){}, 1000);
俩中结果了, 第一种是不行的. 无论递归多少次都无法找到 pre 标签
第二种可行, 不过感觉这并不是一个好的解决方案
巴扎黑2017-05-15 16:54:56
도메인 간 통신이 무슨 뜻인지 잘 모르겠습니다. 컨트롤러 간의 통신이 가능할까요? 그리고 방아쇠?
1. 이렇게 data-*를 사용하지 않고 ng-bind를 직접 작성하면 됩니다
2.
이 위치한 컨트롤러는 main
컨트롤러와 동일한 수준에 있습니다. 외부에 상위 컨트롤러를 추가한 다음 mainController.$scope.$parent.title = post.title
을 사용하거나 $rootScope를 직접 사용할 수 있습니다(권장하지 않음). $emit/$broadcast/$on을 통해서도 이 작업을 수행할 수 있지만 반드시 필요한 것은 아닙니다. <title>
所在的controller是和 main
这个控制器平级的。你可以在他们之外加一个父控制器,然后mainController.$scope.$parent.title = post.title
, 或者直接用$rootScope (不怎么推荐)。也可以通过$emit/$broadcast/$on 这样来做 不过没什么必要了。
然后:
<title ng-bind="$parent.title||'Default Title'"></title>
3、 以 angular highlight
为关键字可以在github搜到一些不错的高亮插件。 bower install 之
4、 不要用window.setTimeout, 用angular提供的 $timeout()
它会返回一个promise。
5、 其实对于第二个问题更好的方法是使用 $resource.get().$promise.then();
그런 다음:
angular 하이라이트
를 키워드로 사용하면 좋은 하이라이트 플러그인을 검색할 수 있습니다. 🎜의 정자 설치
4. window.setTimeout을 사용하지 마세요. Angle에서 제공하는 $timeout()
을 사용하세요. Promise가 반환됩니다. 🎜
5. 실제로 두 번째 문제를 해결하는 더 좋은 방법은 $resource.get().$promise.then();
// 또는 $http 서비스를 사용하여 원격 데이터가 구현 전에 로드되었습니다. 🎜PHP中文网2017-05-15 16:54:56
기사를 렌더링하는 템플릿의 제목 요소에 클래스wtitle
를 추가하면 현재 페이지의 제목이 기사의 제목으로 변경됩니다.
위챗에서도 가능해요~
wtitle의 기능은 element.text()의 내용을 document.title로 설정하는 것입니다. iframe을 사용하는 목적은 앱의 웹뷰에서 이를 효과적으로 만드는 것입니다
으아악