将数据从视图发送到控制器,然后发送到另一个视图

时间:2016-09-08 19:11:12

标签: jquery html angularjs

我正在尝试将变量发送到控制器,然后在另一个View中使用此变量。

View1.html var cat = 5;

Controller.js //得到那个cat = 5变量

View2.html //从控制器

获得那个cat = 5

View2.html必须检查var cat = 5是否已从View1.html更改,以便更改View2.html中的某些链接

尝试使用ng-init但不能在其值中添加变量,我试图传递的值是我从UrlParameter得到的变量。

还尝试使用发布 - 订阅频道。但是两个视图同时被加载,并且View2.html尝试在设置之前从View1.html获取值。

还尝试使用$ scope和ng-model,使用隐藏的输入字段,但显然,它只获取我输入的值,因此,如果我直接分配值,则不会保存。

这就是我现在所拥有的:

view1.html

$('.listaPromociones').append
    ('<input type="hidden" ng-model="newCategory" value="'+cat+'"/>{{newCategory}}...

JS

 $scope.categoryId= $scope.newCategory;

view2.html

var link = 'http://localhost/principal.html?cat={{categoryId}}';

如果您需要更多部分代码,请告诉我们:

http://embed.plnkr.co/Gfwh4SKnJSnyl59jTw3j/

2 个答案:

答案 0 :(得分:0)

您是否在两个视图中使用相同的控制器?如果是,您可以在视图2中引用该变量,但这不是一个好习惯,您应该创建另一个与视图2绑定的控制器,并且您可以使用服务或通过参数在它们之间共享此值,如果我理解你的问题,这是我的看法。

答案 1 :(得分:0)

1.-不要将角度与jquery混合来操纵DOM这不是角度方式,可能会导致冲突,错误和问题

2.-不要在任何地方混合使用脚本和链接标签,这不是一个好习惯

现在为了解决您的问题,您可以执行以下两项操作:要么创建一个service来保存您的值,要么watch进行值更改以自定义您想要的行为,或者将此变量绑定到rootscope并且还会观察此值以在更改时触发回调...