标签: angular-meteor

Angularjs和Meteor"Session"的反应性,有没有办法?

我正在尝试使用Meteor和Angularjs.我正在使用Meteor_angularjs包,它可以正常使用Collections.

现在我正在尝试使用Session和我的反应数据存储:

TestCtrl = [
    "$scope",
    function($scope){
        $scope.value = Session.get('someValue');
    }
]
Run Code Online (Sandbox Code Playgroud)

这不起作用.

问题:关于如何绑定Meteor Session和Angular的任何建议?

据我所知,我可以编写指令,即将进行轮询Session,但我不认为这是一个不错的选择.
谢谢

更新:

我尝试过以下方法:

TestCtrl = [
    "$scope",
    function($scope){
        Meteor.autorun(function(){
            $scope.config = Session.get('testsConfig');
            if (!$scope.$$phase){
                $scope.$digest();
            }
        });
    }
]
Run Code Online (Sandbox Code Playgroud)

它有点工作,但是我收到以下错误:

Error: INVALID_STATE_ERR: DOM Exception 11
Error: An attempt was made to use an object that is not, or is no longer, usable.
    at derez (http://localhost:3000/test:95:41)
    at derez (http://localhost:3000/test:95:30)
    at derez (http://localhost:3000/test:95:30)
    at derez (http://localhost:3000/test:95:30) …
Run Code Online (Sandbox Code Playgroud)

angularjs meteor angular-meteor

5
推荐指数
1
解决办法
1942
查看次数

Angular-Meteor - 如何在基于包的设计中包含ng模板?

我有一个Angular-Meteor应用程序正在运行.我想将Angular模板和关联的控制器打包到Meteor包中,并通过添加该包将这些模板注入我的主应用程序.

什么是最好的方法?

更新2015-08-26 - 我想出了如何添加模板,如下所示.但是如何让Meteor包将模板的Angular控制器注入基础应用程序?

关键的搭配是Angular UI-router.

我有一个基本应用程序,其中包含名为packageprefix:packagename的包.在这个包中,我的代码位于包文件夹的根目录中:myPackagedPage.ng.html - Angular HTML模板myPackagedPage.js - 关联的Angular控制器

从我的主应用程序,我尝试创建一个到我的Angular模板的路由,如下所示:

angular.module('parentModule',[
    'angular-meteor',
    'ui.router',
    'angularify.semantic.sidebar'
])

.config(['$urlRouterProvider', '$stateProvider', '$locationProvider',
function($urlRouterProvider, $stateProvider, $locationProvider){
    console.log("app.js config!");
    $locationProvider.html5Mode(true);

    $stateProvider
        .state('home', {
            url: '/',
            templateUrl: 'client/views/home/home.ng.html',
            controller: 'HomeCtrl'
        })

        .state('myPackagedPage', {
            url: '/myPackagedPage',
            templateUrl: 'packageprefix_packagename/myPackagedPage.ng.html',
            controller: 'MyPackagedPageCtrl'
        })
    ;

    $urlRouterProvider.otherwise('/');

}])
Run Code Online (Sandbox Code Playgroud)

应用程序成功找到myPackagedPage.ng.html文件并呈现它.但是如何添加控制器?

我尝试在我的包中添加它,但控制器函数不会被调用.

console.log("myPackagedPage.js loaded");
angular.module('parentModule')

.controller('MyPackagedPageCtrl', ['$scope',
    function($scope){
        console.log("MyPackagedPageCtrl");
    }])
;
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Argument 'MyPackagedPageCtrl' is not a function, got undefined
Run Code Online (Sandbox Code Playgroud)

angularjs meteor angular-meteor meteor-packages

5
推荐指数
1
解决办法
1021
查看次数

如何使atom-typescript识别没有相对路径的模块?

我正在使用angular2和typescript跟随角度流星教程.

由于我使用的是atom,我添加了atom-typescript包和一个tsconfig文件来利用类型声明文件.

我正在尝试使atom-typescript识别导入client/parties-form/parties_form.ts:

import {Parties} from  'collections/parties';
Run Code Online (Sandbox Code Playgroud)

但原子给我以下错误: Cannot find module 'collections/parties'.

使用相对路径导入模块时,错误消失:

import {Parties} from '../../collections/parties';
Run Code Online (Sandbox Code Playgroud)

但是流星不会编译并给我一个Path reservation conflict错误.

我希望能够使用第一种导入而不使用atom-typescript给我任何错误,从而识别我的类型声明文件.我错过了什么 ?

我的tsconfig.json档案:

{
    "version": "1.5.0",
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "declaration": false,
        "noImplicitAny": false,
        "removeComments": true,
        "noLib": false,
        "emitDecoratorMetadata": true
    },
    "filesGlob": [
        "./**/*.ts",
        "!./typings/**/*.ts"
    ]
}
Run Code Online (Sandbox Code Playgroud)

可以在此处找到完整版本的教程代码.

typescript tsconfig atom-editor angular-meteor angular

5
推荐指数
1
解决办法
4353
查看次数

如果在角度meteor和集合f中上传faild,如何取消文件上传并自动删除记录?

HTML:

<div
  ngf-select
  ngf-keep="true"
  ng-model="vm.photos"
  ngf-accept="'image/*'"
  ngf-pattern="'image/*'"
  ngf-multiple="true">
  Select
</div>
<button ng-click="vm.uploadPhotos()">Upload</button>
Run Code Online (Sandbox Code Playgroud)

客户端JS:

vm.uploadPhotos = function() {
  _.forEach(vm.photos, function(photo) {
      PhotoCol.insert(photo);
  });
};
Run Code Online (Sandbox Code Playgroud)

服务器JS:

PhotoCol = new FS.Collection('propertyPhoto', {
  stores: [
    new FS.Store.FileSystem('original')
  ],
  filter: {
    allow: {
      contentTypes: ['image/*']
    }
  }
});

PhotoCol.allow({
  insert: function() {
    return true;
  },
  update: function() {
    return true;
  },
  remove: function() {
    return true;
  },
  download: function() {
    return true;
  }
});
Run Code Online (Sandbox Code Playgroud)

上传开始时,我需要一种方法来取消一个或所有上传过程.并且CollectionFS在上传完成之前在数据库中创建记录,因此如果由于某种原因用户在完成上传过程之前终止了浏览器,那么我将有一个没有上传文件的照片条目.在这里,我需要捕获该错误以从DB中删除条目.有任何想法吗?

angularjs meteor collectionfs ng-file-upload angular-meteor

5
推荐指数
0
解决办法
494
查看次数

为什么ngif不会从我的代码中删除脚本标签?

我有一些脚本标签,我希望删除条件.在DOM中,我看到它们不存在(它们被注释掉了),但我仍然看到控制台从它们中喷出来.是否加载了脚本标签?如果是这样,有人有任何解决方法吗?

<script ng-if="myCondition" src="blah blah.js"></script>
Run Code Online (Sandbox Code Playgroud)

angularjs angular-ui-router angular-meteor

5
推荐指数
1
解决办法
2604
查看次数

在新数据到达Meteor时动画化

我是meteor和minimongo的新手,所以我有点迷失了做什么,我已经做了研究,但由于我使用的是角+流星而不是火焰,所以找不到太多.

我的服务器上有一个在我的客户端订阅的集合(有角度).每次将新元素添加到我的服务器集合时,客户端会同步并更新minimongo并且它正常工作.

现在我想设置这个新的"事件",例如当一个新元素被添加到mongo数据的表(html)中的集合中时添加动画/渐变背景颜色(通过ng-repeat对辅助进行迭代)但是真的找不到办法做到这一点.

我已经找到了游标,它可能会成功,但我无法弄清楚我应该如何在我的角度前端实现它.

有人试过已经或可能指出我的研究方向吗?

谢谢

styling mongodb angularjs meteor angular-meteor

5
推荐指数
1
解决办法
92
查看次数

角度流星中客户端数据库操作的问题

我是角度流星应用程序开发的新手,我很难从客户端对数据库进行更改.我已经成功地完成了大部分角度流星教程,但是现在我正在尝试启动一个新项目并调整教程中的概念,我遇到了问题.

问题. 用户填写表单,当他们单击"添加"时,表单应将数据保存到数据库中.在同一页面上,我列出了一个显示所有数据库条目的列表(典型的"元素中的元素"循环在html列表中).但是,当我在填写表单后单击"添加"时,新条目将暂时添加到列表中,然后消失.当我点击"全部删除"按钮时,会发生同样的行为,一切都会消失片刻然后恢复.持续存在的数据是添加/删除之前数据库中的数据.

尝试进行故障排除.我可以使用"meteor mongo"访问该集合,并且持久存在的值在集合中.我可以从命令行添加到集合或从中删除(编辑:并且更改反映在客户端).在客户端提交的条目不会添加到数据库中.我使用条件启动了具有服务器端启动功能的数据库if (Videos.find().count() === 0).我想也许数据库每次都只是重新初始化,但是当初始化代码被注释掉时,行为仍然存在.添加自动发布项目无法解决问题.编辑:谷歌浏览器在提交之前或之后在控制台中没有任何错误.

相关守则.我正在使用此存储库作为起点.

/client/views/submit/submit.controller.js

angular.module("app").controller("SubmitCtrl", ['$scope', '$meteor',
  function($scope, $meteor){

    $scope.videos = $meteor.collection(Videos).subscribe('videos');

  }
]);
Run Code Online (Sandbox Code Playgroud)

/client/views/submit/submit.ng.html

<form>
  <label>URL</label>
  <input ng-model="newVideo.linkurl">
  <label>Description</label>
  <input ng-model="newVideo.description">   
  <button ng-click="videos.save(newVideo); newVideo='';">Add</button>
</form>

<ul>
  <li ng-repeat="video in videos">
    {{video.linkurl}}
    <p>{{video.description}}</p>
  </li>
</ul>  
Run Code Online (Sandbox Code Playgroud)

/model/collections.js Videos = new Mongo.Collection("videos");

/server/publications/videos.js

Meteor.startup(function () {
  if (Videos.find().count() === 0) {
    var videos = [
      { 'linkurl': 'https://www.youtube.com/watch?v=O7zewtuUM_0',
        'description': '1st video'},
      { 'linkurl': 'https://www.youtube.com/watch?v=KSzuiqVjJg4', …
Run Code Online (Sandbox Code Playgroud)

mongodb angularjs meteor angular-meteor

3
推荐指数
1
解决办法
670
查看次数

Angular2-Meteor zone()方法

在angular2-流星教程第三步,我们使用区域法.码:

import { Component } from '@angular/core';
import { Observable } from 'rxjs/Observable';

import { Parties } from '../../both/collections/parties.collection';

...some lines skipped...
  template
})
export class AppComponent {
  parties: Observable<any[]>;

  constructor() {
    this.parties = Parties.find({}).zone();
  }
}
Run Code Online (Sandbox Code Playgroud)

Parties.find({}).zone()到底是做什么用的?

rxjs meteor angular-meteor rxjs5 angular

3
推荐指数
1
解决办法
797
查看次数

错误:[$ compile:tplrt]指令'checkNav'的模板必须只有一个根元素

我使用meteor + angular,我想在指令中使用templateUrl来包含nav.ng.html
但是我抛出一个错误

Error: [$compile:tplrt] Template for directive 'checkNav' must have exactly one root element  
Run Code Online (Sandbox Code Playgroud)

index.html的:

 5 <body ng-app='checkApp' ng-controller='CheckCtrl'>
 6   <check-nav></check-nav>
 7 </body>  
Run Code Online (Sandbox Code Playgroud)

directive.js

  1 angular.module 'checkApp'
  2   .directive 'checkNav', () ->
  3   ? restrict: 'E'
  4   ? replace: true
  5   ? templateUrl: 'client/templates/check-views/nav.ng.html'
Run Code Online (Sandbox Code Playgroud)

nav.ng.html

<div>test</div>
Run Code Online (Sandbox Code Playgroud)

我怎么修好它?

javascript angularjs meteor angular-meteor

2
推荐指数
1
解决办法
4350
查看次数

Meteor-Angular教程:HTML模板中的格式错误,用于复制/粘贴代码

通过流星角度教程,在第2步,我创建了角度模板todos-list.ng.html:

<div class="container">
    <header>
        <h1>Todo List</h1>
    </header>

    <ul ng-repeat="task in tasks">
        <li>{{task.text}}</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

并得到这个结果

=> Errors prevented startup:

   While building the application:
   todos-list.ng.html:1: bad formatting in HTML template

=> Your application has errors. Waiting for file change.
Run Code Online (Sandbox Code Playgroud)

因为这是复制粘贴,这让我很困惑.我没有看到任何可以解释的问题,其他人有什么想法吗?

更新

这是其他文件.如果有任何帮助,之前的子步骤是有效的.我确信这是愚蠢的,但我肯定不知道是什么,

简单的待办事项,angular.html:

<head>
  <title>Charlie's Todo List with Angular.js</title>
</head>

<body ng-app="simple-todos"
      ng-include="'todos-list.ng.html'"
      ng-controller="TodosListCtrl">
</body>
Run Code Online (Sandbox Code Playgroud)

简单的待办事项,angular.js:

if (Meteor.isClient) {

  // This code only runs on the client
  angular.module('simple-todos',['angular-meteor']);

  angular.module('simple-todos').controller('TodosListCtrl', ['$scope',
    function ($scope) {

      $scope.tasks = [
        { …
Run Code Online (Sandbox Code Playgroud)

angularjs meteor angular-meteor

2
推荐指数
1
解决办法
969
查看次数

alanning:角色,在angular2-meteor中导入问题

我使用alanning:role流星包,角色工作正常,但问题是我收到了警告"Cannot find name 'Roles".

请帮我解决这个问题.我到处搜索过它.

有些人喜欢导入它 "import { Roles } from 'alanning:roles';"

我也尝试了这个,但仍然有错误...请帮助我,请不要像"问题"那样提交.我过去两天都在搜索这个问题,但是我没有回答,请给我任何帮助,或者请提前解决这个问题.

roles meteor angular-meteor angular2-meteor angular

2
推荐指数
1
解决办法
632
查看次数